Add FQCN mappings for network facts modules (#69601) (#69689)

* Add FQCN mappings for network facts modules

Signed-off-by: NilashishC <nilashishchakraborty8@gmail.com>

* Add unit tests

Signed-off-by: NilashishC <nilashishchakraborty8@gmail.com>

* update entry for ironware

Signed-off-by: NilashishC <nilashishchakraborty8@gmail.com>
(cherry picked from commit dae3ba71a8)

Add changelog
pull/69409/head
Nilashish Chakraborty 5 years ago committed by GitHub
parent f6829b386e
commit d5b648ee41
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -0,0 +1,2 @@
bugfixes:
- Fix gather_facts not working for network platforms when network_os is in FQCN format (https://github.com/ansible/ansible/pull/69601).

@ -1304,13 +1304,30 @@ ERROR_ON_MISSING_HANDLER:
CONNECTION_FACTS_MODULES:
name: Map of connections to fact modules
default:
asa: asa_facts
cisco.asa.asa: cisco.asa.asa_facts
eos: eos_facts
arista.eos.eos: arista.eos.eos_facts
frr: frr_facts
frr.frr.frr: frr.frr.frr_facts
ios: ios_facts
cisco.ios.ios: cisco.ios.ios_facts
iosxr: iosxr_facts
cisco.iosxr.iosxr: cisco.iosxr.iosxr_facts
junos: junos_facts
junipernetworks.junos.junos: junipernetworks.junos.junos_facts
nxos: nxos_facts
cisco.nxos.nxos: cisco.nxos.nxos_facts
vyos: vyos_facts
vyos.vyos.vyos: vyos.vyos.vyos_facts
exos: exos_facts
extreme.exos.exos: extreme.exos.exos_facts
slxos: slxos_facts
extreme.slxos.slxos: extreme.slxos.slxos_facts
voss: voss_facts
extreme.voss.voss: extreme.voss.voss_facts
ironware: ironware_facts
community.network.ironware: community.network.ironware_facts
description: "Which modules to run during a play's fact gathering stage based on connection"
env: [{name: ANSIBLE_CONNECTION_FACTS_MODULES}]
ini:

@ -31,7 +31,6 @@ from units.mock.loader import DictDataLoader
class TestNetworkFacts(unittest.TestCase):
task = MagicMock(Task)
task_vars = {'ansible_network_os': 'ios'}
play_context = MagicMock()
play_context.check_mode = False
connection = MagicMock()
@ -46,6 +45,7 @@ class TestNetworkFacts(unittest.TestCase):
pass
def test_network_gather_facts(self):
self.task_vars = {'ansible_network_os': 'ios'}
self.task.action = 'gather_facts'
self.task.async_val = False
self.task.args = {'gather_subset': 'min'}
@ -62,3 +62,22 @@ class TestNetworkFacts(unittest.TestCase):
facts_modules = C.config.get_config_value('FACTS_MODULES', variables=self.task_vars)
self.assertEqual(facts_modules, ['ios_facts'])
def test_network_gather_facts_fqcn(self):
self.fqcn_task_vars = {'ansible_network_os': 'cisco.ios.ios'}
self.task.action = 'gather_facts'
self.task.async_val = False
self.task.args = {'gather_subset': 'min'}
self.task.module_defaults = [{'cisco.ios.ios_facts': {'gather_subset': 'min'}}]
plugin = ActionModule(self.task, self.connection, self.play_context, loader=None, templar=self.templar, shared_loader_obj=None)
plugin._execute_module = MagicMock()
res = plugin.run(task_vars=self.fqcn_task_vars)
self.assertEqual(res['ansible_facts']['_ansible_facts_gathered'], True)
mod_args = plugin._get_module_args('cisco.ios.ios_facts', task_vars=self.fqcn_task_vars)
self.assertEqual(mod_args['gather_subset'], 'min')
facts_modules = C.config.get_config_value('FACTS_MODULES', variables=self.fqcn_task_vars)
self.assertEqual(facts_modules, ['cisco.ios.ios_facts'])

Loading…
Cancel
Save