diff options
| author | Jenkins <jenkins@review.openstack.org> | 2016-04-18 17:01:42 +0000 |
|---|---|---|
| committer | Gerrit Code Review <review@openstack.org> | 2016-04-18 17:01:42 +0000 |
| commit | e3a6fc27b0cfc9b82801e13d61c2fad3a09bf6b1 (patch) | |
| tree | 35d9bc4bbfc7bffcfcd0f9a02fac58ce3f874c98 /openstackclient/common/clientmanager.py | |
| parent | 89445855acffc5ae4cf87dc501c09f3434d08bad (diff) | |
| parent | 926330d3726e9ce7001190730c69bf6ee45b422a (diff) | |
| download | python-openstackclient-e3a6fc27b0cfc9b82801e13d61c2fad3a09bf6b1.tar.gz | |
Merge "Propagate AttributeErrors when lazily loading plugins"
Diffstat (limited to 'openstackclient/common/clientmanager.py')
| -rw-r--r-- | openstackclient/common/clientmanager.py | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/openstackclient/common/clientmanager.py b/openstackclient/common/clientmanager.py index 6d23b55e..8b0fb921 100644 --- a/openstackclient/common/clientmanager.py +++ b/openstackclient/common/clientmanager.py @@ -22,8 +22,10 @@ import sys from oslo_utils import strutils import requests +import six from openstackclient.api import auth +from openstackclient.common import exceptions from openstackclient.common import session as osc_session from openstackclient.identity import client as identity_client @@ -45,7 +47,13 @@ class ClientCache(object): def __get__(self, instance, owner): # Tell the ClientManager to login to keystone if self._handle is None: - self._handle = self.factory(instance) + try: + self._handle = self.factory(instance) + except AttributeError as err: + # Make sure the failure propagates. Otherwise, the plugin just + # quietly isn't there. + new_err = exceptions.PluginAttributeError(err) + six.reraise(new_err.__class__, new_err, sys.exc_info()[2]) return self._handle |
