Merge "Nova-all: Replace basestring by six for python3 compatability"

This commit is contained in:
Jenkins 2013-11-15 11:57:40 +00:00 committed by Gerrit Code Review
commit 8af5c61ab0
26 changed files with 72 additions and 41 deletions

View File

@ -24,6 +24,7 @@ import urlparse
from eventlet.green import httplib
from oslo.config import cfg
import six
import webob
import webob.dec
import webob.exc
@ -521,7 +522,7 @@ def ec2_error_ex(ex, req, code=None, message=None, unexpected=False):
# Log filtered environment for unexpected errors.
env = req.environ.copy()
for k in env.keys():
if not isinstance(env[k], basestring):
if not isinstance(env[k], six.string_types):
env.pop(k)
log_fun(_('Environment: %s') % jsonutils.dumps(env))
if not message:

View File

@ -57,6 +57,7 @@ import os
import sys
from oslo.config import cfg
import six
from nova import config
from nova.openstack.common import cliutils
@ -186,7 +187,7 @@ def main():
v = getattr(CONF.category, 'action_kwarg_' + k)
if v is None:
continue
if isinstance(v, basestring):
if isinstance(v, six.string_types):
v = v.decode('utf-8')
fn_kwargs[k] = v

View File

@ -60,6 +60,7 @@ import sys
import netaddr
from oslo.config import cfg
import six
from nova.api.ec2 import ec2utils
from nova import availability_zones
@ -1357,7 +1358,7 @@ def main():
v = getattr(CONF.category, 'action_kwarg_' + k)
if v is None:
continue
if isinstance(v, basestring):
if isinstance(v, six.string_types):
v = v.decode('utf-8')
fn_kwargs[k] = v

View File

@ -28,6 +28,7 @@ import string
import uuid
from oslo.config import cfg
import six
from nova import availability_zones
from nova import block_device
@ -1760,7 +1761,7 @@ class API(base.Base):
else:
# Remaps are strings to translate to, or functions to call
# to do the translating as defined by the table above.
if isinstance(remap_object, basestring):
if isinstance(remap_object, six.string_types):
filters[remap_object] = value
else:
try:

View File

@ -14,6 +14,8 @@
"""Handles database requests from other nova services."""
import six
from nova.api.ec2 import ec2utils
from nova import block_device
from nova.cells import rpcapi as cells_rpcapi
@ -124,7 +126,7 @@ class ConductorManager(manager.Manager):
"'%(key)s' on %(instance_uuid)s"),
{'key': key, 'instance_uuid': instance_uuid})
raise KeyError("unexpected update keyword '%s'" % key)
if key in datetime_fields and isinstance(value, basestring):
if key in datetime_fields and isinstance(value, six.string_types):
updates[key] = timeutils.parse_strtime(value)
old_ref, instance_ref = self.db.instance_update_and_get_original(

View File

@ -22,6 +22,8 @@
import copy
import uuid
import six
from nova import exception
from nova.openstack.common.gettextutils import _
from nova.openstack.common import local
@ -71,7 +73,7 @@ class RequestContext(object):
self.remote_address = remote_address
if not timestamp:
timestamp = timeutils.utcnow()
if isinstance(timestamp, basestring):
if isinstance(timestamp, six.string_types):
timestamp = timeutils.parse_strtime(timestamp)
self.timestamp = timestamp
if not request_id:

View File

@ -29,6 +29,7 @@ import time
import uuid
from oslo.config import cfg
import six
from sqlalchemy import and_
from sqlalchemy import Boolean
from sqlalchemy.exc import DataError
@ -290,7 +291,7 @@ def exact_filter(query, model, filters, legal_keys):
def convert_datetimes(values, *datetime_keys):
for key in values:
if key in datetime_keys and isinstance(values[key], basestring):
if key in datetime_keys and isinstance(values[key], six.string_types):
values[key] = timeutils.parse_strtime(values[key])
return values
@ -1580,7 +1581,7 @@ def _handle_objects_related_type_conversions(values):
for key in ('created_at', 'deleted_at', 'updated_at',
'launched_at', 'terminated_at', 'scheduled_at'):
if key in values and values[key]:
if isinstance(values[key], basestring):
if isinstance(values[key], six.string_types):
values[key] = timeutils.parse_strtime(values[key])
values[key] = values[key].replace(tzinfo=None)

View File

@ -30,6 +30,7 @@ import urlparse
import glanceclient
import glanceclient.exc
from oslo.config import cfg
import six
from nova import exception
import nova.image.download as image_xfers
@ -467,13 +468,13 @@ def _convert_timestamps_to_datetimes(image_meta):
# NOTE(bcwaldon): used to store non-string data in glance metadata
def _json_loads(properties, attr):
prop = properties[attr]
if isinstance(prop, basestring):
if isinstance(prop, six.string_types):
properties[attr] = jsonutils.loads(prop)
def _json_dumps(properties, attr):
prop = properties[attr]
if not isinstance(prop, basestring):
if not isinstance(prop, six.string_types):
properties[attr] = jsonutils.dumps(prop)

View File

@ -26,6 +26,7 @@ import re
import netaddr
from oslo.config import cfg
import six
from nova import db
from nova import exception
@ -292,7 +293,7 @@ class IptablesTable(object):
def remove_rules_regex(self, regex):
"""Remove all rules matching regex."""
if isinstance(regex, basestring):
if isinstance(regex, six.string_types):
regex = re.compile(regex)
num_rules = len(self.rules)
self.rules = filter(lambda r: not regex.match(str(r)), self.rules)

View File

@ -19,6 +19,7 @@ import functools
import eventlet
import netaddr
import six
from nova import exception
from nova.openstack.common.gettextutils import _
@ -324,7 +325,7 @@ class NetworkInfo(list):
@classmethod
def hydrate(cls, network_info):
if isinstance(network_info, basestring):
if isinstance(network_info, six.string_types):
network_info = jsonutils.loads(network_info)
return cls([VIF.hydrate(vif) for vif in network_info])

View File

@ -206,7 +206,7 @@ class Field(object):
class String(FieldType):
def coerce(self, obj, attr, value):
# FIXME(danms): We should really try to avoid the need to do this
if isinstance(value, (basestring, int, long, float,
if isinstance(value, (six.string_types, int, long, float,
datetime.datetime)):
return unicode(value)
else:
@ -232,7 +232,7 @@ class Boolean(FieldType):
class DateTime(FieldType):
def coerce(self, obj, attr, value):
if isinstance(value, basestring):
if isinstance(value, six.string_types):
value = timeutils.parse_isotime(value)
elif not isinstance(value, datetime.datetime):
raise ValueError(_('A datetime.datetime is required here'))
@ -302,8 +302,12 @@ class Dict(CompoundFieldType):
if not isinstance(value, dict):
raise ValueError(_('A dict is required here'))
for key, element in value.items():
if not isinstance(key, basestring):
raise KeyTypeError(basestring, key)
if not isinstance(key, six.string_types):
#NOTE(guohliu) In order to keep compatibility with python3
#we need to use six.string_types rather than basestring here,
#since six.string_types is a tuple, so we need to pass the
#real type in.
raise KeyTypeError(six.string_types[0], key)
value[key] = self._element_type.coerce(
obj, '%s["%s"]' % (attr, key), element)
return value
@ -355,7 +359,7 @@ class NetworkModel(FieldType):
def coerce(self, obj, attr, value):
if isinstance(value, network_model.NetworkInfo):
return value
elif isinstance(value, basestring):
elif isinstance(value, six.string_types):
# Hmm, do we need this?
return network_model.NetworkInfo.hydrate(value)
else:

View File

@ -18,6 +18,7 @@ import datetime
import iso8601
import netaddr
import six
from nova.network import model as network_model
from nova.openstack.common.gettextutils import _
@ -42,7 +43,7 @@ def datetime_or_none(dt):
# NOTE(danms): Being tolerant of isotime strings here will help us
# during our objects transition
def datetime_or_str_or_none(val):
if isinstance(val, basestring):
if isinstance(val, six.string_types):
return timeutils.parse_isotime(val)
return datetime_or_none(val)
@ -109,7 +110,7 @@ def list_of_strings_or_none(val):
return val
if not isinstance(val, list):
raise ValueError(_('A list of strings is required here'))
if not all([isinstance(x, basestring) for x in val]):
if not all([isinstance(x, six.string_types) for x in val]):
raise ValueError(_('Invalid values found in list '
'(strings are required)'))
return val
@ -123,10 +124,10 @@ def dict_of_strings_or_none(val):
val = dict(val.iteritems())
except Exception:
raise ValueError(_('A dict of strings is required here'))
if not all([isinstance(x, basestring) for x in val.keys()]):
if not all([isinstance(x, six.string_types) for x in val.keys()]):
raise ValueError(_('Invalid keys found in dict '
'(strings are required)'))
if not all([isinstance(x, basestring) for x in val.values()]):
if not all([isinstance(x, six.string_types) for x in val.values()]):
raise ValueError(_('Invalid values found in dict '
'(strings are required)'))
return val

View File

@ -43,6 +43,7 @@ import urllib
from oslo.config import cfg
import routes
import six
import webob
from nova.openstack.common import fileutils
@ -184,7 +185,7 @@ class BaseRequestHandler(object):
if not parts:
parts = []
if isinstance(value, basestring):
if isinstance(value, six.string_types):
parts.append(utils.xhtml_escape(value))
elif isinstance(value, int) or isinstance(value, long):
parts.append(str(value))

View File

@ -21,6 +21,7 @@
import datetime
from oslo.config import cfg
import six
from nova import db
from nova import exception
@ -1057,7 +1058,7 @@ class QuotaEngine(object):
return self.__driver
if not self._driver_cls:
self._driver_cls = CONF.quota_driver
if isinstance(self._driver_cls, basestring):
if isinstance(self._driver_cls, six.string_types):
self._driver_cls = importutils.import_object(self._driver_cls)
self.__driver = self._driver_cls
return self.__driver

View File

@ -16,6 +16,7 @@
import netaddr
import six
from nova.compute import api as compute
from nova.openstack.common.gettextutils import _
@ -41,7 +42,7 @@ class DifferentHostFilter(AffinityFilter):
scheduler_hints = filter_properties.get('scheduler_hints') or {}
affinity_uuids = scheduler_hints.get('different_host', [])
if isinstance(affinity_uuids, basestring):
if isinstance(affinity_uuids, six.string_types):
affinity_uuids = [affinity_uuids]
if affinity_uuids:
return not self.compute_api.get_all(context,
@ -65,7 +66,7 @@ class SameHostFilter(AffinityFilter):
scheduler_hints = filter_properties.get('scheduler_hints') or {}
affinity_uuids = scheduler_hints.get('same_host', [])
if isinstance(affinity_uuids, basestring):
if isinstance(affinity_uuids, six.string_types):
affinity_uuids = [affinity_uuids]
if affinity_uuids:
return self.compute_api.get_all(context, {'host': host_state.host,

View File

@ -15,6 +15,7 @@
import operator
import six
from nova.openstack.common import jsonutils
from nova.scheduler import filters
@ -117,7 +118,7 @@ class JsonFilter(filters.BaseHostFilter):
for arg in query[1:]:
if isinstance(arg, list):
arg = self._process_filter(arg, host_state)
elif isinstance(arg, basestring):
elif isinstance(arg, six.string_types):
arg = self._parse_string(arg, host_state)
if arg is not None:
cooked_args.append(arg)

View File

@ -14,6 +14,7 @@
# limitations under the License.
from oslo.config import cfg
import six
from nova import conductor
from nova import context
@ -55,7 +56,7 @@ class DbDriver(api.ServiceGroupDriver):
Check whether a service is up based on last heartbeat.
"""
last_heartbeat = service_ref['updated_at'] or service_ref['created_at']
if isinstance(last_heartbeat, basestring):
if isinstance(last_heartbeat, six.string_types):
# NOTE(russellb) If this service_ref came in over rpc via
# conductor, then the timestamp will be a string and needs to be
# converted back to a datetime.

View File

@ -20,6 +20,7 @@ import uuid
import glanceclient.v1.images
import routes
import six
import webob
import webob.dec
import webob.request
@ -418,7 +419,7 @@ def create_info_cache(nw_cache):
{'cidr': 'b33f::/64',
'ips': [_ip(ip) for ip in pub1]}]}}]
if not isinstance(nw_cache, basestring):
if not isinstance(nw_cache, six.string_types):
nw_cache = jsonutils.dumps(nw_cache)
return {

View File

@ -17,6 +17,7 @@ Tests For Cells RPCAPI
"""
from oslo.config import cfg
import six
from nova.cells import rpcapi as cells_rpcapi
from nova import exception
@ -56,7 +57,7 @@ class CellsAPITestCase(test.NoDBTestCase):
self.assertEqual(self.fake_topic, call_info['topic'])
self.assertEqual(method, call_info['msg']['method'])
msg_version = call_info['msg']['version']
self.assertIsInstance(msg_version, basestring,
self.assertIsInstance(msg_version, six.string_types,
msg="Message version %s is not a string" %
msg_version)
self.assertEqual(version, call_info['msg']['version'])

View File

@ -28,6 +28,7 @@ import uuid as stdlib_uuid
import mox
import netaddr
from oslo.config import cfg
import six
from sqlalchemy.dialects import sqlite
from sqlalchemy import exc
from sqlalchemy.exc import IntegrityError
@ -1889,11 +1890,11 @@ class InstanceTestCase(test.TestCase, ModelsObjectComparatorMixin):
self.ctxt, instance['uuid'],
{'access_ip_v4': netaddr.IPAddress('1.2.3.4'),
'access_ip_v6': netaddr.IPAddress('::1')})
self.assertIsInstance(instance['access_ip_v4'], basestring)
self.assertIsInstance(instance['access_ip_v6'], basestring)
self.assertIsInstance(instance['access_ip_v4'], six.string_types)
self.assertIsInstance(instance['access_ip_v6'], six.string_types)
instance = db.instance_get_by_uuid(self.ctxt, instance['uuid'])
self.assertIsInstance(instance['access_ip_v4'], basestring)
self.assertIsInstance(instance['access_ip_v6'], basestring)
self.assertIsInstance(instance['access_ip_v4'], six.string_types)
self.assertIsInstance(instance['access_ip_v6'], six.string_types)
class InstanceMetadataTestCase(test.TestCase):

View File

@ -19,6 +19,7 @@
import re
from eventlet import greenthread
import six
from nova.openstack.common.gettextutils import _
from nova.openstack.common import log as logging
@ -80,7 +81,7 @@ def fake_execute(*cmd_parts, **kwargs):
LOG.debug(_('Faked command matched %s') % fake_replier[0])
break
if isinstance(reply_handler, basestring):
if isinstance(reply_handler, six.string_types):
# If the reply handler is a string, return it as stdout
reply = reply_handler, ''
else:

View File

@ -18,6 +18,7 @@ import os
import re
from lxml import etree
import six
from nova.openstack.common.gettextutils import _
from nova.openstack.common import importutils
@ -169,7 +170,7 @@ class ApiSampleTestBase(integrated_helpers._IntegratedTestBase):
if error:
raise NoMatch('\n'.join(error))
elif isinstance(expected, basestring) and '%' in expected:
elif isinstance(expected, six.string_types) and '%' in expected:
# NOTE(vish): escape stuff for regex
for char in '[]<>?':
expected = expected.replace(char, '\\%s' % char)
@ -194,7 +195,7 @@ class ApiSampleTestBase(integrated_helpers._IntegratedTestBase):
if match.groups():
matched_value = match.groups()[0]
else:
if isinstance(expected, basestring):
if isinstance(expected, six.string_types):
# NOTE(danms): Ignore whitespace in this comparison
expected = expected.strip()
result = result.strip()

View File

@ -21,6 +21,7 @@ import traceback
from mock import MagicMock
import netaddr
import six
from nova.compute import manager
from nova import exception
@ -496,7 +497,7 @@ class _VirtDriverTestCase(_FakeDriverBackendTestCase):
fake_libvirt_utils.files['dummy.log'] = ''
instance_ref, network_info = self._get_running_instance()
console_output = self.connection.get_console_output(instance_ref)
self.assertIsInstance(console_output, basestring)
self.assertIsInstance(console_output, six.string_types)
@catch_notimplementederror
def test_get_vnc_console(self):

View File

@ -37,6 +37,7 @@ from xml.sax import saxutils
import eventlet
import netaddr
from oslo.config import cfg
import six
from nova import exception
from nova.openstack.common import excutils
@ -948,7 +949,7 @@ def check_string_length(value, name, min_length=0, max_length=None):
:param min_length: the min_length of the string
:param max_length: the max_length of the string
"""
if not isinstance(value, basestring):
if not isinstance(value, six.string_types):
msg = _("%s is not a string or unicode") % name
raise exception.InvalidInput(message=msg)
@ -1002,7 +1003,7 @@ def is_none_string(val):
"""
Check if a string represents a None value.
"""
if not isinstance(val, basestring):
if not isinstance(val, six.string_types):
return False
return val.lower() == 'none'

View File

@ -19,6 +19,7 @@ import functools
import socket
from eventlet.green import httplib
import six
from nova.openstack.common import jsonutils
from nova.openstack.common import log as logging
@ -43,7 +44,7 @@ def filter_data(f):
obj = new_list
if isinstance(obj, dict):
for k, v in obj.items():
if isinstance(k, basestring):
if isinstance(k, six.string_types):
obj[k.lower()] = _filter(v)
return obj
return _filter(out)

View File

@ -26,6 +26,7 @@ import urllib2
import urlparse
from oslo.config import cfg
import six
from nova import exception
from nova.openstack.common.gettextutils import _
@ -806,7 +807,7 @@ class LibvirtFibreChannelVolumeDriver(LibvirtBaseVolumeDriver):
if isinstance(ports, list):
for wwn in ports:
wwns.append(str(wwn))
elif isinstance(ports, basestring):
elif isinstance(ports, six.string_types):
wwns.append(str(ports))
# We need to look for wwns on every hba