diff options
author | Toshio Kuratomi <a.badger@gmail.com> | 2016-03-21 07:32:07 -0700 |
---|---|---|
committer | Toshio Kuratomi <a.badger@gmail.com> | 2016-03-21 07:32:07 -0700 |
commit | 407f8f934e1dc0b31a2e97298acb68bdb8d29987 (patch) | |
tree | e328e127a3fbfddbd398b0e87c3d9b0de3740ebb /lib/ansible/plugins/__init__.py | |
parent | 636871c2c00712f85e9a6c6dd308294540d67a99 (diff) | |
parent | 38092dcc27d0ad42e59d604713526f453232c4d8 (diff) | |
download | ansible-407f8f934e1dc0b31a2e97298acb68bdb8d29987.tar.gz |
Merge pull request #14976 from xiaket/devel
use __mro__ for plugin loading when we search for its base class.
Diffstat (limited to 'lib/ansible/plugins/__init__.py')
-rw-r--r-- | lib/ansible/plugins/__init__.py | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/lib/ansible/plugins/__init__.py b/lib/ansible/plugins/__init__.py index f0fa0ec62b..83956753dc 100644 --- a/lib/ansible/plugins/__init__.py +++ b/lib/ansible/plugins/__init__.py @@ -329,8 +329,13 @@ class PluginLoader: obj = getattr(self._module_cache[path], self.class_name) else: obj = getattr(self._module_cache[path], self.class_name)(*args, **kwargs) - if self.base_class and self.base_class not in [base.__name__ for base in obj.__class__.__bases__]: - return None + if self.base_class: + # The import path is hardcoded and should be the right place, + # so we are not expecting an ImportError. + module = __import__(self.package, fromlist=[self.base_class]) + # Check whether this obj has the required base class. + if not issubclass(obj.__class__, getattr(module, self.base_class, None)): + return None return obj |