diff --git a/bin/nova-manage b/bin/nova-manage index 372d69ea..7ac36595 100755 --- a/bin/nova-manage +++ b/bin/nova-manage @@ -1084,7 +1084,7 @@ class ServiceCommands(object): {"method": "show_host_resources", "args": {"host": host}}) - if type(result) != dict: + if not isinstance(result, dict): print _('An unexpected error has occurred.') print _('[Result]'), result else: diff --git a/nova/auth/ldapdriver.py b/nova/auth/ldapdriver.py index 6b9969da..6f8ae6e6 100644 --- a/nova/auth/ldapdriver.py +++ b/nova/auth/ldapdriver.py @@ -85,7 +85,7 @@ def _clean(attr): """Clean attr for insertion into ldap""" if attr is None: return None - if type(attr) is unicode: + if isinstance(attr, unicode): return str(attr) return attr diff --git a/nova/common/cfg.py b/nova/common/cfg.py index 0cb7abfb..68c50593 100644 --- a/nova/common/cfg.py +++ b/nova/common/cfg.py @@ -962,9 +962,9 @@ class ConfigOpts(object): :param value: the string value, or list of string values :returns: the substituted string(s) """ - if type(value) is list: + if isinstance(value, list): return [self._substitute(i) for i in value] - elif type(value) is str: + elif isinstance(value, str): tmpl = string.Template(value) return tmpl.safe_substitute(self.StrSubWrapper(self)) else: diff --git a/nova/rpc/impl_carrot.py b/nova/rpc/impl_carrot.py index d5a7d5ca..ee6bac1e 100644 --- a/nova/rpc/impl_carrot.py +++ b/nova/rpc/impl_carrot.py @@ -24,11 +24,11 @@ No fan-out support yet. """ +import inspect import json import sys import time import traceback -import types import uuid from carrot import connection as carrot_connection @@ -284,7 +284,7 @@ class AdapterConsumer(Consumer): try: rval = node_func(context=ctxt, **node_args) # Check if the result was a generator - if isinstance(rval, types.GeneratorType): + if inspect.isgenerator(rval): for x in rval: ctxt.reply(x, None) else: diff --git a/nova/rpc/impl_fake.py b/nova/rpc/impl_fake.py index cacf2a37..9d7f867a 100644 --- a/nova/rpc/impl_fake.py +++ b/nova/rpc/impl_fake.py @@ -17,9 +17,9 @@ queues. Casts will block, but this is very useful for tests. """ +import inspect import sys import traceback -import types from nova import context from nova.rpc import common as rpc_common @@ -60,7 +60,7 @@ class Consumer(object): # if ending not 'sent'...we might have more data to # return from the function itself if not ctxt._done: - if isinstance(rval, types.GeneratorType): + if inspect.isgenerator(rval): for val in rval: yield val else: diff --git a/nova/rpc/impl_kombu.py b/nova/rpc/impl_kombu.py index 810a6629..5f47737d 100644 --- a/nova/rpc/impl_kombu.py +++ b/nova/rpc/impl_kombu.py @@ -18,11 +18,11 @@ import kombu import kombu.entity import kombu.messaging import kombu.connection +import inspect import itertools import sys import time import traceback -import types import uuid import eventlet @@ -651,7 +651,7 @@ class ProxyCallback(object): try: rval = node_func(context=ctxt, **node_args) # Check if the result was a generator - if isinstance(rval, types.GeneratorType): + if inspect.isgenerator(rval): for x in rval: ctxt.reply(x, None) else: diff --git a/nova/scheduler/distributed_scheduler.py b/nova/scheduler/distributed_scheduler.py index 1d149a13..4ea27910 100644 --- a/nova/scheduler/distributed_scheduler.py +++ b/nova/scheduler/distributed_scheduler.py @@ -21,7 +21,6 @@ Weighing Functions. import json import operator -import types import M2Crypto @@ -358,7 +357,7 @@ class DistributedScheduler(driver.Scheduler): return getattr(filters, nm) return [get_itm(itm) for itm in dir(filters) - if (type(get_itm(itm)) is types.TypeType) + if isinstance(get_itm(itm), type) and issubclass(get_itm(itm), filters.AbstractHostFilter) and get_itm(itm) is not filters.AbstractHostFilter] diff --git a/nova/scheduler/zone_manager.py b/nova/scheduler/zone_manager.py index 543e8567..e7c7b611 100644 --- a/nova/scheduler/zone_manager.py +++ b/nova/scheduler/zone_manager.py @@ -140,7 +140,7 @@ class ReadOnlyDict(UserDict.IterableUserDict): return elif isinstance(source, UserDict.UserDict): self.data = source.data - elif isinstance(source, type({})): + elif isinstance(source, dict): self.data = source else: raise TypeError