|
10 | 10 | import utilities_common.multi_asic as multi_asic_util
|
11 | 11 | from importlib import reload
|
12 | 12 | from natsort import natsorted
|
13 |
| -from sonic_py_common import device_info |
| 13 | +from sonic_py_common import device_info, multi_asic |
14 | 14 | from swsscommon.swsscommon import SonicV2Connector, ConfigDBConnector
|
15 | 15 | from tabulate import tabulate
|
16 | 16 | from utilities_common import util_base
|
17 | 17 | from utilities_common.db import Db
|
18 | 18 | from datetime import datetime
|
19 | 19 | import utilities_common.constants as constants
|
20 | 20 | from utilities_common.general import load_db_config
|
| 21 | +from json.decoder import JSONDecodeError |
21 | 22 |
|
22 | 23 | # mock the redis for unit test purposes #
|
23 | 24 | try:
|
@@ -127,6 +128,10 @@ def run_command(command, display_cmd=False, return_cmd=False):
|
127 | 128 | if rc != 0:
|
128 | 129 | sys.exit(rc)
|
129 | 130 |
|
| 131 | +def get_cmd_output(cmd): |
| 132 | + proc = subprocess.Popen(cmd, text=True, stdout=subprocess.PIPE) |
| 133 | + return proc.communicate()[0], proc.returncode |
| 134 | + |
130 | 135 | # Lazy global class instance for SONiC interface name to alias conversion
|
131 | 136 | iface_alias_converter = lazy_object_proxy.Proxy(lambda: clicommon.InterfaceAliasConverter())
|
132 | 137 |
|
@@ -1229,8 +1234,25 @@ def runningconfiguration():
|
1229 | 1234 | @click.option('--verbose', is_flag=True, help="Enable verbose output")
|
1230 | 1235 | def all(verbose):
|
1231 | 1236 | """Show full running configuration"""
|
1232 |
| - cmd = "sonic-cfggen -d --print-data" |
1233 |
| - run_command(cmd, display_cmd=verbose) |
| 1237 | + cmd = ['sonic-cfggen', '-d', '--print-data'] |
| 1238 | + stdout, rc = get_cmd_output(cmd) |
| 1239 | + if rc: |
| 1240 | + click.echo("Failed to get cmd output '{}':rc {}".format(cmd, rc)) |
| 1241 | + raise click.Abort() |
| 1242 | + |
| 1243 | + try: |
| 1244 | + output = json.loads(stdout) |
| 1245 | + except JSONDecodeError as e: |
| 1246 | + click.echo("Failed to load output '{}':{}".format(cmd, e)) |
| 1247 | + raise click.Abort() |
| 1248 | + |
| 1249 | + if not multi_asic.is_multi_asic(): |
| 1250 | + bgpraw_cmd = [constants.RVTYSH_COMMAND, '-c', 'show running-config'] |
| 1251 | + bgpraw, rc = get_cmd_output(bgpraw_cmd) |
| 1252 | + if rc: |
| 1253 | + bgpraw = "" |
| 1254 | + output['bgpraw'] = bgpraw |
| 1255 | + click.echo(json.dumps(output, indent=4)) |
1234 | 1256 |
|
1235 | 1257 |
|
1236 | 1258 | # 'acl' subcommand ("show runningconfiguration acl")
|
|
0 commit comments