Network load_config: Capture configuration output and display as warnings (#27851)

* Capture configuration output and display as warnings

* Don't break on nxapi

nxapi errors very loudly instead, so no need to muck about with warnings
This commit is contained in:
Nathaniel Case 2017-08-09 09:43:04 -04:00 committed by GitHub
parent 2af759e9f9
commit c1bf74283e
4 changed files with 9 additions and 3 deletions

View file

@ -165,16 +165,21 @@ class Cli:
def load_config(self, config):
"""Sends configuration commands to the remote device
"""
rc, out, err = self.exec_command('configure')
if rc != 0:
self._module.fail_json(msg='unable to enter configuration mode', output=to_text(err, errors='surrogate_then_replace'))
msgs = []
for cmd in config:
rc, out, err = self.exec_command(cmd)
if rc != 0:
self._module.fail_json(msg=to_text(err, errors='surrogate_then_replace'))
elif out:
msgs.append(out)
self.exec_command('end')
return msgs
class Nxapi:
@ -343,6 +348,7 @@ class Nxapi:
"""
commands = to_list(commands)
self.send_request(commands, output='config')
return []
def is_json(cmd):

View file

@ -748,7 +748,7 @@ def main():
if candidate:
candidate = candidate.items_text()
load_config(module, candidate)
warnings.extend(load_config(module, candidate))
result['changed'] = True
result['commands'] = candidate
else:

View file

@ -204,7 +204,7 @@ class Connection(Rpc, _Connection):
"""Removes elements from the response before returning to the caller"""
cleaned = []
for line in resp.splitlines():
if (command and line.startswith(command.strip())) or self._matched_prompt.strip() in line:
if (command and line.strip() == command.strip()) or self._matched_prompt.strip() in line:
continue
cleaned.append(line)
return b'\n'.join(cleaned).strip()

View file

@ -43,7 +43,7 @@ class TestNxosBgpNeighborAfModule(TestNxosModule):
def load_fixtures(self, commands=None, device=''):
self.get_config.return_value = load_fixture('', 'nxos_bgp_config.cfg')
self.load_config.return_value = None
self.load_config.return_value = []
def test_nxos_bgp_neighbor_af(self):
set_module_args(dict(asn=65535, neighbor='3.3.3.3', afi='ipv4',