mirror of
https://github.com/ansible-collections/community.general.git
synced 2024-09-14 20:13:21 +02:00
fixes a number of issues with nxos_facts (#22923)
* updates command runs to return warning if command fails * fixes variable issues from recent refactoring * removes provider from return of module
This commit is contained in:
parent
73f50b4f9f
commit
866f67e213
3 changed files with 15 additions and 6 deletions
|
@ -50,7 +50,7 @@ nxos_argument_spec = {
|
||||||
'validate_certs': dict(type='bool'),
|
'validate_certs': dict(type='bool'),
|
||||||
'timeout': dict(type='int'),
|
'timeout': dict(type='int'),
|
||||||
|
|
||||||
'provider': dict(type='dict', no_log=True),
|
'provider': dict(type='dict'),
|
||||||
'transport': dict(choices=['cli', 'nxapi'])
|
'transport': dict(choices=['cli', 'nxapi'])
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -203,7 +203,7 @@ class FactsBase(object):
|
||||||
try:
|
try:
|
||||||
return resp[0]
|
return resp[0]
|
||||||
except IndexError:
|
except IndexError:
|
||||||
self.warnings.append('command %s returned to data, facts will not be populated' % command_string)
|
self.warnings.append('command %s failed, facts will not be populated' % command_string)
|
||||||
return None
|
return None
|
||||||
|
|
||||||
def transform_dict(self, data, keymap):
|
def transform_dict(self, data, keymap):
|
||||||
|
@ -290,13 +290,13 @@ class Interfaces(FactsBase):
|
||||||
if data:
|
if data:
|
||||||
self.facts['interfaces'] = self.populate_interfaces(data)
|
self.facts['interfaces'] = self.populate_interfaces(data)
|
||||||
|
|
||||||
data = self.run('show ipv6 inteface', 'json')
|
data = self.run('show ipv6 interface', 'json')
|
||||||
if data:
|
if data:
|
||||||
self.parse_ipv6_interfaces(out)
|
self.parse_ipv6_interfaces(data)
|
||||||
|
|
||||||
data = self.run('show lldp neighbors')
|
data = self.run('show lldp neighbors')
|
||||||
if data:
|
if data:
|
||||||
self.facts['neighbors'] = self.populate_neighbors(out)
|
self.facts['neighbors'] = self.populate_neighbors(data)
|
||||||
|
|
||||||
def populate_interfaces(self, data):
|
def populate_interfaces(self, data):
|
||||||
interfaces = dict()
|
interfaces = dict()
|
||||||
|
@ -315,6 +315,11 @@ class Interfaces(FactsBase):
|
||||||
return interfaces
|
return interfaces
|
||||||
|
|
||||||
def populate_neighbors(self, data):
|
def populate_neighbors(self, data):
|
||||||
|
# if there are no neighbors the show command returns
|
||||||
|
# ERROR: No neighbour information
|
||||||
|
if data.startswith('ERROR'):
|
||||||
|
return dict()
|
||||||
|
|
||||||
data = data['TABLE_nbor']['ROW_nbor']
|
data = data['TABLE_nbor']['ROW_nbor']
|
||||||
if isinstance(data, dict):
|
if isinstance(data, dict):
|
||||||
data = [data]
|
data = [data]
|
||||||
|
|
|
@ -57,6 +57,7 @@ class ActionModule(_ActionModule):
|
||||||
pc = copy.deepcopy(self._play_context)
|
pc = copy.deepcopy(self._play_context)
|
||||||
pc.connection = 'network_cli'
|
pc.connection = 'network_cli'
|
||||||
pc.network_os = 'nxos'
|
pc.network_os = 'nxos'
|
||||||
|
pc.remote_addr = provider['host'] or self._play_context.remote_addr
|
||||||
pc.port = provider['port'] or self._play_context.port or 22
|
pc.port = provider['port'] or self._play_context.port or 22
|
||||||
pc.remote_user = provider['username'] or self._play_context.connection_user
|
pc.remote_user = provider['username'] or self._play_context.connection_user
|
||||||
pc.password = provider['password'] or self._play_context.password
|
pc.password = provider['password'] or self._play_context.password
|
||||||
|
@ -115,7 +116,10 @@ class ActionModule(_ActionModule):
|
||||||
# make sure a transport value is set in args
|
# make sure a transport value is set in args
|
||||||
self._task.args['transport'] = transport
|
self._task.args['transport'] = transport
|
||||||
|
|
||||||
return super(ActionModule, self).run(tmp, task_vars)
|
result = super(ActionModule, self).run(tmp, task_vars)
|
||||||
|
del result['invocation']['module_args']['provider']
|
||||||
|
|
||||||
|
return result
|
||||||
|
|
||||||
def _get_socket_path(self, play_context):
|
def _get_socket_path(self, play_context):
|
||||||
ssh = connection_loader.get('ssh', class_only=True)
|
ssh = connection_loader.get('ssh', class_only=True)
|
||||||
|
|
Loading…
Reference in a new issue