summaryrefslogtreecommitdiffstats
path: root/ipalib
diff options
context:
space:
mode:
Diffstat (limited to 'ipalib')
-rwxr-xr-xipalib/aci.py4
-rw-r--r--ipalib/base.py4
-rw-r--r--ipalib/cli.py7
-rw-r--r--ipalib/config.py6
-rw-r--r--ipalib/messages.py4
-rw-r--r--ipalib/parameters.py19
-rw-r--r--ipalib/plugins/baseldap.py6
-rw-r--r--ipalib/plugins/baseuser.py6
-rw-r--r--ipalib/plugins/dns.py6
-rw-r--r--ipalib/plugins/group.py5
-rw-r--r--ipalib/plugins/permission.py4
-rw-r--r--ipalib/rpc.py5
-rw-r--r--ipalib/util.py10
13 files changed, 56 insertions, 30 deletions
diff --git a/ipalib/aci.py b/ipalib/aci.py
index f78c5327d..3019375c1 100755
--- a/ipalib/aci.py
+++ b/ipalib/aci.py
@@ -20,6 +20,8 @@
import shlex
import re
+import six
+
# The Python re module doesn't do nested parenthesis
# Break the ACI into 3 pieces: target, name, permissions/bind_rules
@@ -159,7 +161,7 @@ class ACI:
raise SyntaxError, "invalid permission: '%s'" % p
if not self.name:
raise SyntaxError, "name must be set"
- if not isinstance(self.name, basestring):
+ if not isinstance(self.name, six.string_types):
raise SyntaxError, "name must be a string"
if not isinstance(self.target, dict) or len(self.target) == 0:
raise SyntaxError, "target must be a non-empty dictionary"
diff --git a/ipalib/base.py b/ipalib/base.py
index 12b2efd00..33b33eeb2 100644
--- a/ipalib/base.py
+++ b/ipalib/base.py
@@ -23,6 +23,8 @@ Foundational classes and functions.
import re
+import six
+
from ipalib.constants import NAME_REGEX, NAME_ERROR
from ipalib.constants import TYPE_ERROR, SET_ERROR, DEL_ERROR, OVERRIDE_ERROR
@@ -466,7 +468,7 @@ class NameSpace(ReadOnly):
:param key: The name or index of a member, or a slice object.
"""
key = getattr(key, '__name__', key)
- if isinstance(key, basestring):
+ if isinstance(key, six.string_types):
return self.__map[key]
if type(key) in (int, slice):
return self.__members[key]
diff --git a/ipalib/cli.py b/ipalib/cli.py
index abd691bc1..9c6d570f7 100644
--- a/ipalib/cli.py
+++ b/ipalib/cli.py
@@ -31,6 +31,9 @@ import termios
import struct
import base64
import traceback
+
+import six
+
try:
#pylint: disable=F0401
import default_encoding_utf8
@@ -280,7 +283,7 @@ class textui(backend.Backend):
objectClass: top
objectClass: someClass
"""
- assert isinstance(attr, basestring)
+ assert isinstance(attr, six.string_types)
if not isinstance(value, (list, tuple)):
# single-value attribute
self.print_indented(format % (attr, self.encode_binary(value)), indent)
@@ -420,7 +423,7 @@ class textui(backend.Backend):
------------------
Only dashed above.
"""
- assert isinstance(dash, basestring)
+ assert isinstance(dash, six.string_types)
assert len(dash) == 1
dashes = dash * len(string)
if above:
diff --git a/ipalib/config.py b/ipalib/config.py
index 760fa5bdd..90933b7a2 100644
--- a/ipalib/config.py
+++ b/ipalib/config.py
@@ -35,8 +35,10 @@ from types import NoneType
import os
from os import path
import sys
-from ipapython.dn import DN
+import six
+
+from ipapython.dn import DN
from ipalib.base import check_name
from ipalib.constants import CONFIG_SECTION
from ipalib.constants import OVERRIDE_ERROR, SET_ERROR, DEL_ERROR
@@ -239,7 +241,7 @@ class Env(object):
(self.__class__.__name__, key, self.__d[key], value)
)
assert not hasattr(self, key)
- if isinstance(value, basestring):
+ if isinstance(value, six.string_types):
value = value.strip()
if isinstance(value, str):
value = value.decode('utf-8')
diff --git a/ipalib/messages.py b/ipalib/messages.py
index 58ae1f3ec..4615cbc2b 100644
--- a/ipalib/messages.py
+++ b/ipalib/messages.py
@@ -32,6 +32,8 @@ Messages also have the 'type' argument, set to one of 'debug', 'info',
from inspect import isclass
+import six
+
from ipalib.constants import TYPE_ERROR
from ipalib.text import _ as ugettext
from ipalib.text import Gettext, NGettext
@@ -60,7 +62,7 @@ def process_message_arguments(obj, format=None, message=None, **kw):
obj.format = format
obj.forwarded = False
obj.msg = obj.format % kw
- if isinstance(obj.format, basestring):
+ if isinstance(obj.format, six.string_types):
obj.strerror = ugettext(obj.format) % kw
else:
obj.strerror = obj.format % kw
diff --git a/ipalib/parameters.py b/ipalib/parameters.py
index f9da3b0f5..c9baf414a 100644
--- a/ipalib/parameters.py
+++ b/ipalib/parameters.py
@@ -108,6 +108,7 @@ from types import NoneType
import encodings.idna
import dns.name
+import six
from ipalib.text import _ as ugettext
from ipalib.plugable import ReadOnly, lock, check_name
@@ -394,8 +395,8 @@ class Param(ReadOnly):
('cli_name', str, None),
('cli_short_name', str, None),
('deprecated_cli_aliases', frozenset, frozenset()),
- ('label', (basestring, Gettext), None),
- ('doc', (basestring, Gettext), None),
+ ('label', (six.string_types, Gettext), None),
+ ('doc', (six.string_types, Gettext), None),
('required', bool, True),
('multivalue', bool, False),
('primary_key', bool, False),
@@ -964,7 +965,7 @@ class Bool(Param):
"""
if type(value) in self.allowed_types:
return value
- if isinstance(value, basestring):
+ if isinstance(value, six.string_types):
value = value.lower()
if value in self.truths:
return True
@@ -1143,7 +1144,7 @@ class Decimal(Number):
value = kw.get(kwparam)
if value is None:
continue
- if isinstance(value, (basestring, float)):
+ if isinstance(value, (six.string_types, float)):
try:
value = decimal.Decimal(value)
except Exception as e:
@@ -1233,7 +1234,7 @@ class Decimal(Number):
return value
def _convert_scalar(self, value, index=None):
- if isinstance(value, (basestring, float)):
+ if isinstance(value, (six.string_types, float)):
try:
value = decimal.Decimal(value)
except decimal.DecimalException as e:
@@ -1264,8 +1265,8 @@ class Data(Param):
('minlength', int, None),
('maxlength', int, None),
('length', int, None),
- ('pattern', (basestring,), None),
- ('pattern_errmsg', (basestring,), None),
+ ('pattern', (six.string_types,), None),
+ ('pattern_errmsg', (six.string_types,), None),
)
re = None
@@ -1474,7 +1475,7 @@ class IA5Str(Str):
super(IA5Str, self).__init__(name, *rules, **kw)
def _convert_scalar(self, value, index=None):
- if isinstance(value, basestring):
+ if isinstance(value, six.string_types):
for i in xrange(len(value)):
if ord(value[i]) > 127:
raise ConversionError(name=self.get_param_name(),
@@ -1646,7 +1647,7 @@ class DateTime(Param):
type_error = _('must be datetime value')
def _convert_scalar(self, value, index=None):
- if isinstance(value, basestring):
+ if isinstance(value, six.string_types):
for date_format in self.accepted_formats:
try:
time = datetime.datetime.strptime(value, date_format)
diff --git a/ipalib/plugins/baseldap.py b/ipalib/plugins/baseldap.py
index 8a05c782e..a8525e81e 100644
--- a/ipalib/plugins/baseldap.py
+++ b/ipalib/plugins/baseldap.py
@@ -25,6 +25,8 @@ import time
from copy import deepcopy
import base64
+import six
+
from ipalib import api, crud, errors
from ipalib import Method, Object, Command
from ipalib import Flag, Int, Str
@@ -816,7 +818,7 @@ def _check_single_value_attrs(params, entry_attrs):
# required, make sure we enforce that.
def _check_empty_attrs(params, entry_attrs):
for (a, v) in entry_attrs.iteritems():
- if v is None or (isinstance(v, basestring) and len(v) == 0):
+ if v is None or (isinstance(v, six.string_types) and len(v) == 0):
if a in params and params[a].required:
raise errors.RequirementError(name=a)
@@ -2038,7 +2040,7 @@ class LDAPSearch(BaseLDAPCommand, crud.Search):
config_attrs = config.get(
self.obj.search_attributes_config, [])
if len(config_attrs) == 1 and (
- isinstance(config_attrs[0], basestring)):
+ isinstance(config_attrs[0], six.string_types)):
search_attrs = config_attrs[0].split(',')
search_kw['objectclass'] = self.obj.object_class
diff --git a/ipalib/plugins/baseuser.py b/ipalib/plugins/baseuser.py
index 5eede7a98..c3e290371 100644
--- a/ipalib/plugins/baseuser.py
+++ b/ipalib/plugins/baseuser.py
@@ -22,6 +22,8 @@ import string
import posixpath
import os
+import six
+
from ipalib import api, errors
from ipalib import Flag, Int, Password, Str, Bool, StrEnum, DateTime, Bytes
from ipalib.plugable import Registry
@@ -89,7 +91,7 @@ def validate_nsaccountlock(entry_attrs):
if 'nsaccountlock' in entry_attrs:
nsaccountlock = entry_attrs['nsaccountlock']
if not isinstance(nsaccountlock, (bool, Bool)):
- if not isinstance(nsaccountlock, basestring):
+ if not isinstance(nsaccountlock, six.string_types):
raise errors.OnlyOneValueAllowed(attr='nsaccountlock')
if nsaccountlock.lower() not in ('true', 'false'):
raise errors.ValidationError(name='nsaccountlock',
@@ -400,7 +402,7 @@ class baseuser(LDAPObject):
if not isinstance(email, (list, tuple)):
email = [email]
for m in email:
- if isinstance(m, basestring):
+ if isinstance(m, six.string_types):
if '@' not in m and defaultdomain:
m = m + u'@' + defaultdomain
if not Email(m):
diff --git a/ipalib/plugins/dns.py b/ipalib/plugins/dns.py
index 23871a58f..10c4987af 100644
--- a/ipalib/plugins/dns.py
+++ b/ipalib/plugins/dns.py
@@ -24,11 +24,13 @@ import netaddr
import time
import re
import binascii
+import encodings.idna
+
import dns.name
import dns.exception
import dns.rdatatype
import dns.resolver
-import encodings.idna
+import six
from ipalib.request import context
from ipalib import api, errors, output
@@ -1671,7 +1673,7 @@ def _create_idn_filter(cmd, ldap, *args, **options):
config = ldap.get_ipa_config()
config_attrs = config.get(cmd.obj.search_attributes_config, [])
if len(config_attrs) == 1 and (isinstance(config_attrs[0],
- basestring)):
+ six.string_types)):
search_attrs = config_attrs[0].split(',')
search_kw['objectclass'] = cmd.obj.object_class
diff --git a/ipalib/plugins/group.py b/ipalib/plugins/group.py
index 18ae6dc36..8ee20a9a8 100644
--- a/ipalib/plugins/group.py
+++ b/ipalib/plugins/group.py
@@ -18,6 +18,8 @@
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
+import six
+
from ipalib import api
from ipalib import Int, Str
from ipalib.plugable import Registry
@@ -25,6 +27,7 @@ from ipalib.plugins.baseldap import *
from ipalib.plugins.idviews import remove_ipaobject_overrides
from ipalib.plugins import baseldap
from ipalib import _, ngettext
+
if api.env.in_server and api.env.context in ['lite', 'server']:
try:
import ipaserver.dcerpc
@@ -460,7 +463,7 @@ class group_find(LDAPSearch):
search_kw = {}
config = ldap.get_ipa_config()
attrs = config.get(self.obj.search_attributes_config, [])
- if len(attrs) == 1 and isinstance(attrs[0], basestring):
+ if len(attrs) == 1 and isinstance(attrs[0], six.string_types):
search_attrs = attrs[0].split(',')
for a in search_attrs:
search_kw[a] = args[-1]
diff --git a/ipalib/plugins/permission.py b/ipalib/plugins/permission.py
index 012b78fcc..9544cd292 100644
--- a/ipalib/plugins/permission.py
+++ b/ipalib/plugins/permission.py
@@ -20,6 +20,8 @@
import re
import traceback
+import six
+
from ipalib.plugins import baseldap
from ipalib.plugins.privilege import validate_permission_to_privilege
from ipalib import errors
@@ -134,7 +136,7 @@ class DNOrURL(DNParam):
"""
def _convert_scalar(self, value, index=None):
- if isinstance(value, basestring) and value.startswith('ldap:///'):
+ if isinstance(value, six.string_types) and value.startswith('ldap:///'):
value = strip_ldap_prefix(value)
return super(DNOrURL, self)._convert_scalar(value, index=index)
diff --git a/ipalib/rpc.py b/ipalib/rpc.py
index 9d0fc8f7b..0dc897a08 100644
--- a/ipalib/rpc.py
+++ b/ipalib/rpc.py
@@ -41,13 +41,14 @@ import urllib
import json
import socket
from urllib2 import urlparse
-
from xmlrpclib import (Binary, Fault, DateTime, dumps, loads, ServerProxy,
Transport, ProtocolError, MININT, MAXINT)
+
import gssapi
from dns import resolver, rdatatype
from dns.exception import DNSException
from nss.error import NSPRError
+import six
from ipalib.backend import Connectible
from ipalib.constants import LDAP_GENERALIZED_TIME_FORMAT
@@ -339,7 +340,7 @@ def json_decode_binary(val):
elif isinstance(val, list):
return tuple(json_decode_binary(v) for v in val)
else:
- if isinstance(val, basestring):
+ if isinstance(val, six.string_types):
try:
return val.decode('utf-8')
except UnicodeDecodeError:
diff --git a/ipalib/util.py b/ipalib/util.py
index 4a75b820a..e38ddbbdc 100644
--- a/ipalib/util.py
+++ b/ipalib/util.py
@@ -29,13 +29,15 @@ import re
import decimal
import dns
import encodings
-import netaddr
from types import NoneType
from weakref import WeakKeyDictionary
+
+import netaddr
from dns import resolver, rdatatype
from dns.exception import DNSException
from dns.resolver import NXDOMAIN
from netaddr.core import AddrFormatError
+import six
from ipalib import errors, messages
from ipalib.text import _
@@ -178,7 +180,7 @@ def check_writable_file(filename):
raise errors.FileError(reason=str(e))
def normalize_zonemgr(zonemgr):
- if not zonemgr or not isinstance(zonemgr, basestring):
+ if not zonemgr or not isinstance(zonemgr, six.string_types):
return zonemgr
if '@' in zonemgr:
# local-part needs to be normalized
@@ -572,8 +574,8 @@ def _resolve_record(owner, rtype, nameserver_ip=None, edns0=False,
:param flag_cd: requires dnssec=True, adds flag CD
:raise DNSException: if error occurs
"""
- assert isinstance(nameserver_ip, basestring)
- assert isinstance(rtype, basestring)
+ assert isinstance(nameserver_ip, six.string_types)
+ assert isinstance(rtype, six.string_types)
res = dns.resolver.Resolver()
if nameserver_ip: