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

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

@ -74,7 +74,7 @@ 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
@ -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