mirror of
https://git.proxmox.com/git/mirror_frr
synced 2025-05-21 15:32:54 +00:00
topogen: added JSON output support for vtysh_cmd
Allow vtysh_cmd() to convert JSON output to Python data structures. This feature will be used to get vtysh JSON outputs for tests comparsions. Usage example: ```py router = get_topogen().gears['r1'] json_output = router.vtysh_cmd('show ip ospf json', isjson=True) json_cmp(json_output, {'important_key': 'important_value'}) ```
This commit is contained in:
parent
09e21b4487
commit
a40daddc4c
@ -40,6 +40,7 @@ Basic usage instructions:
|
|||||||
|
|
||||||
import os
|
import os
|
||||||
import sys
|
import sys
|
||||||
|
import json
|
||||||
|
|
||||||
from mininet.net import Mininet
|
from mininet.net import Mininet
|
||||||
from mininet.log import setLogLevel
|
from mininet.log import setLogLevel
|
||||||
@ -388,7 +389,7 @@ class TopoRouter(TopoGear):
|
|||||||
"""
|
"""
|
||||||
return self.tgen.net[self.name].startRouter()
|
return self.tgen.net[self.name].startRouter()
|
||||||
|
|
||||||
def vtysh_cmd(self, command):
|
def vtysh_cmd(self, command, isjson=False):
|
||||||
"""
|
"""
|
||||||
Runs the provided command string in the vty shell and returns a string
|
Runs the provided command string in the vty shell and returns a string
|
||||||
with the response.
|
with the response.
|
||||||
@ -401,7 +402,11 @@ class TopoRouter(TopoGear):
|
|||||||
return self.vtysh_multicmd(command)
|
return self.vtysh_multicmd(command)
|
||||||
|
|
||||||
vtysh_command = 'vtysh -c "{}" 2>/dev/null'.format(command)
|
vtysh_command = 'vtysh -c "{}" 2>/dev/null'.format(command)
|
||||||
return self.run(vtysh_command)
|
output = self.run(vtysh_command)
|
||||||
|
if isjson is False:
|
||||||
|
return output
|
||||||
|
|
||||||
|
return json.loads(output)
|
||||||
|
|
||||||
def vtysh_multicmd(self, commands, pretty_output=True):
|
def vtysh_multicmd(self, commands, pretty_output=True):
|
||||||
"""
|
"""
|
||||||
|
Loading…
Reference in New Issue
Block a user