diff --git a/lib/ansible/plugins/action/net_base.py b/lib/ansible/plugins/action/net_base.py index e5c1804dc9..3923ddafec 100644 --- a/lib/ansible/plugins/action/net_base.py +++ b/lib/ansible/plugins/action/net_base.py @@ -43,16 +43,16 @@ class ActionModule(ActionBase): play_context = copy.deepcopy(self._play_context) play_context.network_os = self._get_network_os(task_vars) - # we should be able to stream line this a bit by creating a common - # provider argument spec in module_utils/network/common/utils.py or another - # option is that there isn't a need to push provider into the module - # since the connection is started in the action handler. - f, p, d = find_module('ansible') - f2, p2, d2 = find_module('module_utils', [p]) - f3, p3, d3 = find_module(play_context.network_os, [p2]) - module = load_module('ansible.module_utils.{0}.{1}'.format(play_context.network_os, play_context.network_os), f3, p3, d3) - if play_context.connection == 'local': + # we should be able to stream line this a bit by creating a common + # provider argument spec in module_utils/network/common/utils.py or another + # option is that there isn't a need to push provider into the module + # since the connection is started in the action handler. + module_name = 'ansible.module_utils.network.{0}.{0}'.format(play_context.network_os) + f, p, d = find_module('ansible') + for package in module_name.split('.')[1:]: + f, p, d = find_module(package, [p]) + module = load_module(module_name, f, p, d) self.provider = load_provider(module.get_provider_argspec(), self._task.args) if play_context.network_os == 'junos':