able to load collections but they don't do anything because no actionmodulemixin, need to tweak how this works

pull/715/head
Steven Robertson 5 years ago
parent 74b7934e37
commit e99d63f4fc

@ -74,8 +74,8 @@ except ImportError:
LOG = logging.getLogger(__name__) LOG = logging.getLogger(__name__)
try:
class ActionModuleMixin(ansible.plugins.action.ActionBase): class ActionModuleMixin(ansible.plugins.action.ActionBase):
""" """
The Mitogen-patched PluginLoader dynamically mixes this into every action The Mitogen-patched PluginLoader dynamically mixes this into every action
class that Ansible attempts to load. It exists to override all the class that Ansible attempts to load. It exists to override all the
@ -519,3 +519,8 @@ class ActionModuleMixin(ansible.plugins.action.ActionBase):
'stdout_lines': stdout_text.splitlines(), 'stdout_lines': stdout_text.splitlines(),
'stderr': stderr, 'stderr': stderr,
} }
except AttributeError:
# if we're loading collections, there is no ActionBase
# collections are implemented via an import hook
# https://github.com/ansible/ansible/pull/52194/files
pass

@ -40,6 +40,7 @@ except ImportError:
import mitogen.core import mitogen.core
import ansible_mitogen.affinity import ansible_mitogen.affinity
import ansible_mitogen.loaders import ansible_mitogen.loaders
# import epdb; epdb.set_trace()
import ansible_mitogen.mixins import ansible_mitogen.mixins
import ansible_mitogen.process import ansible_mitogen.process
@ -137,7 +138,12 @@ def wrap_action_loader__get(name, *args, **kwargs):
klass = ansible_mitogen.loaders.action_loader__get(name, **get_kwargs) klass = ansible_mitogen.loaders.action_loader__get(name, **get_kwargs)
if klass: if klass:
try:
bases = (ansible_mitogen.mixins.ActionModuleMixin, klass) bases = (ansible_mitogen.mixins.ActionModuleMixin, klass)
except AttributeError:
# if we're loading a collection, there's no ActionModuleMixin
bases = (klass,)
adorned_klass = type(str(name), bases, {}) adorned_klass = type(str(name), bases, {})
if kwargs.get('class_only'): if kwargs.get('class_only'):
return adorned_klass return adorned_klass

Loading…
Cancel
Save