Skip to content

Commit 34810df

Browse files
authored
[show] Eliminate need for writing template files for 'show platform summary' and 'show version' (sonic-net#335)
- Eliminate the need to write template files to disk in both "show platform summary" and "show version" - Now catching exception if we cannot retrieve HwSKU from ConfigDB and display "Unknown" as result
1 parent 4258287 commit 34810df

File tree

1 file changed

+27
-39
lines changed

1 file changed

+27
-39
lines changed

show/main.py

+27-39
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,18 @@
11
#! /usr/bin/python -u
22

3-
import click
43
import errno
5-
import getpass
64
import json
75
import os
86
import re
97
import subprocess
108
import sys
9+
10+
import click
1111
from click_default_group import DefaultGroup
1212
from natsort import natsorted
1313
from tabulate import tabulate
14+
15+
import sonic_platform
1416
from swsssdk import ConfigDBConnector
1517
from swsssdk import SonicV2Connector
1618

@@ -878,25 +880,24 @@ def platform():
878880
@platform.command()
879881
def summary():
880882
"""Show hardware platform information"""
881-
username = getpass.getuser()
883+
machine_info = sonic_platform.get_machine_info()
884+
platform = sonic_platform.get_platform_info(machine_info)
882885

883-
PLATFORM_TEMPLATE_FILE = "/tmp/cli_platform_{0}.j2".format(username)
884-
PLATFORM_TEMPLATE_CONTENTS = "Platform: {{ DEVICE_METADATA.localhost.platform }}\n" \
885-
"HwSKU: {{ DEVICE_METADATA.localhost.hwsku }}\n" \
886-
"ASIC: {{ asic_type }}"
887-
888-
# Create a temporary Jinja2 template file to use with sonic-cfggen
889-
f = open(PLATFORM_TEMPLATE_FILE, 'w')
890-
f.write(PLATFORM_TEMPLATE_CONTENTS)
891-
f.close()
886+
config_db = ConfigDBConnector()
887+
config_db.connect()
888+
data = config_db.get_table('DEVICE_METADATA')
892889

893-
cmd = "sonic-cfggen -d -y /etc/sonic/sonic_version.yml -t {0}".format(PLATFORM_TEMPLATE_FILE)
894-
p = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE)
895-
click.echo(p.stdout.read())
890+
try:
891+
hwsku = data['localhost']['hwsku']
892+
except KeyError:
893+
hwsku = "Unknown"
896894

897-
# Clean up
898-
os.remove(PLATFORM_TEMPLATE_FILE)
895+
version_info = sonic_platform.get_sonic_version_info()
896+
asic_type = version_info['asic_type']
899897

898+
click.echo("Platform: {}".format(platform))
899+
click.echo("HwSKU: {}".format(hwsku))
900+
click.echo("ASIC: {}".format(asic_type))
900901

901902
# 'syseeprom' subcommand ("show platform syseeprom")
902903
@platform.command()
@@ -955,33 +956,20 @@ def logging(process, lines, follow, verbose):
955956
@cli.command()
956957
def version():
957958
"""Show version information"""
958-
username = getpass.getuser()
959-
960-
VERSION_TEMPLATE_FILE = "/tmp/cli_version_{0}.j2".format(username)
961-
VERSION_TEMPLATE_CONTENTS = "SONiC Software Version: SONiC.{{ build_version }}\n" \
962-
"Distribution: Debian {{ debian_version }}\n" \
963-
"Kernel: {{ kernel_version }}\n" \
964-
"Build commit: {{ commit_id }}\n" \
965-
"Build date: {{ build_date }}\n" \
966-
"Built by: {{ built_by }}"
967-
968-
# Create a temporary Jinja2 template file to use with sonic-cfggen
969-
f = open(VERSION_TEMPLATE_FILE, 'w')
970-
f.write(VERSION_TEMPLATE_CONTENTS)
971-
f.close()
972-
973-
cmd = "sonic-cfggen -y /etc/sonic/sonic_version.yml -t {0}".format(VERSION_TEMPLATE_FILE)
974-
p = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE)
975-
click.echo(p.stdout.read())
959+
version_info = sonic_platform.get_sonic_version_info()
960+
961+
click.echo("SONiC Software Version: SONiC.{}".format(version_info['build_version']))
962+
click.echo("Distribution: Debian {}".format(version_info['debian_version']))
963+
click.echo("Kernel: {}".format(version_info['kernel_version']))
964+
click.echo("Build commit: {}".format(version_info['commit_id']))
965+
click.echo("Build date: {}".format(version_info['build_date']))
966+
click.echo("Built by: {}".format(version_info['built_by']))
976967

977-
click.echo("Docker images:")
968+
click.echo("\nDocker images:")
978969
cmd = 'sudo docker images --format "table {{.Repository}}\\t{{.Tag}}\\t{{.ID}}\\t{{.Size}}"'
979970
p = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE)
980971
click.echo(p.stdout.read())
981972

982-
# Clean up
983-
os.remove(VERSION_TEMPLATE_FILE)
984-
985973
#
986974
# 'environment' command ("show environment")
987975
#

0 commit comments

Comments
 (0)