fixes issue with duplicated commands in CommandRunner
The CommandRunner will not allow duplicate commands to be added to the command stack. This fix will now catch the exception and continue if a duplicate command is attempting to be added to the runner instance.
This commit is contained in:
parent
e09cfec2e9
commit
619e3bba7e
1 changed files with 19 additions and 12 deletions
|
@ -118,10 +118,18 @@ ansible_net_memtotal_mb:
|
|||
import re
|
||||
|
||||
from ansible.module_utils.basic import get_exception
|
||||
from ansible.module_utils.netcmd import CommandRunner
|
||||
from ansible.module_utils.netcli import CommandRunner, AddCommandError
|
||||
from ansible.module_utils.ios import NetworkModule
|
||||
|
||||
|
||||
def add_command(runner, command):
|
||||
try:
|
||||
runner.add_command(command)
|
||||
except AddCommandError:
|
||||
# AddCommandError is raised for any issue adding a command to
|
||||
# the runner. Silently ignore the exception in this case
|
||||
pass
|
||||
|
||||
class FactsBase(object):
|
||||
|
||||
def __init__(self, runner):
|
||||
|
@ -133,7 +141,7 @@ class FactsBase(object):
|
|||
class Default(FactsBase):
|
||||
|
||||
def commands(self):
|
||||
self.runner.add_command('show version')
|
||||
add_command(self.runner, 'show version')
|
||||
|
||||
def populate(self):
|
||||
data = self.runner.get_command('show version')
|
||||
|
@ -173,9 +181,9 @@ class Default(FactsBase):
|
|||
class Hardware(FactsBase):
|
||||
|
||||
def commands(self):
|
||||
self.runner.add_command('dir all-filesystems | include Directory')
|
||||
self.runner.add_command('show version')
|
||||
self.runner.add_command('show memory statistics | include Processor')
|
||||
add_command(self.runner, 'dir all-filesystems | include Directory')
|
||||
add_command(self.runner, 'show version')
|
||||
add_command(self.runner, 'show memory statistics | include Processor')
|
||||
|
||||
def populate(self):
|
||||
data = self.runner.get_command('dir all-filesystems | include Directory')
|
||||
|
@ -194,7 +202,7 @@ class Hardware(FactsBase):
|
|||
class Config(FactsBase):
|
||||
|
||||
def commands(self):
|
||||
self.runner.add_command('show running-config')
|
||||
add_command(self.runner, 'show running-config')
|
||||
|
||||
def populate(self):
|
||||
self.facts['config'] = self.runner.get_command('show running-config')
|
||||
|
@ -203,10 +211,10 @@ class Config(FactsBase):
|
|||
class Interfaces(FactsBase):
|
||||
|
||||
def commands(self):
|
||||
self.runner.add_command('show interfaces')
|
||||
self.runner.add_command('show ipv6 interface')
|
||||
self.runner.add_command('show lldp')
|
||||
self.runner.add_command('show lldp neighbors detail')
|
||||
add_command(self.runner, 'show interfaces')
|
||||
add_command(self.runner, 'show ipv6 interface')
|
||||
add_command(self.runner, 'show lldp')
|
||||
add_command(self.runner, 'show lldp neighbors detail')
|
||||
|
||||
def populate(self):
|
||||
self.facts['all_ipv4_addresses'] = list()
|
||||
|
@ -417,7 +425,7 @@ def main():
|
|||
for key in runable_subsets:
|
||||
instances.append(FACT_SUBSETS[key](runner))
|
||||
|
||||
runner.run_commands()
|
||||
runner.run()
|
||||
|
||||
try:
|
||||
for inst in instances:
|
||||
|
@ -436,4 +444,3 @@ def main():
|
|||
|
||||
if __name__ == '__main__':
|
||||
main()
|
||||
|
||||
|
|
Loading…
Reference in a new issue