summaryrefslogtreecommitdiffstats
path: root/openstack/common/rpc/dispatcher.py
diff options
context:
space:
mode:
Diffstat (limited to 'openstack/common/rpc/dispatcher.py')
-rw-r--r--openstack/common/rpc/dispatcher.py10
1 files changed, 8 insertions, 2 deletions
diff --git a/openstack/common/rpc/dispatcher.py b/openstack/common/rpc/dispatcher.py
index 7319eb2..4aabce2 100644
--- a/openstack/common/rpc/dispatcher.py
+++ b/openstack/common/rpc/dispatcher.py
@@ -92,14 +92,20 @@ class RpcDispatcher(object):
if not version:
version = '1.0'
+ had_compatible = False
for proxyobj in self.callbacks:
if hasattr(proxyobj, 'RPC_API_VERSION'):
rpc_api_version = proxyobj.RPC_API_VERSION
else:
rpc_api_version = '1.0'
+ is_compatible = self._is_compatible(rpc_api_version, version)
+ had_compatible = had_compatible or is_compatible
if not hasattr(proxyobj, method):
continue
- if self._is_compatible(rpc_api_version, version):
+ if is_compatible:
return getattr(proxyobj, method)(ctxt, **kwargs)
- raise rpc_common.UnsupportedRpcVersion(version=version)
+ if had_compatible:
+ raise AttributeError("No such RPC function '%s'" % method)
+ else:
+ raise rpc_common.UnsupportedRpcVersion(version=version)