diff --git a/src/klish-plugin-infix/xml/infix.xml b/src/klish-plugin-infix/xml/infix.xml
index 9e99c2e1..40357a53 100644
--- a/src/klish-plugin-infix/xml/infix.xml
+++ b/src/klish-plugin-infix/xml/infix.xml
@@ -277,7 +277,7 @@
if [ -n "$KLISH_PARAM_name" ]; then
cat "$tmp" | /usr/libexec/statd/cli-pretty "infix-system" -n "$KLISH_PARAM_name"
else
- cat "$tmp" | /usr/libexec/statd/cli-pretty "infix-system"
+ cat "$tmp" | /usr/libexec/statd/cli-pretty "show-software"
fi
rm "$tmp"
@@ -311,27 +311,27 @@
-
+
ipv4
ipv6
- if [ "$KLISH_PARAM_name" != "ipv4" ]; then
- if [ "$KLISH_PARAM_name" != "ipv6" ]; then
- KLISH_PARAM_name=ipv4
+ if [ "$KLISH_PARAM_ip" != "ipv4" ]; then
+ if [ "$KLISH_PARAM_ip" != "ipv6" ]; then
+ KLISH_PARAM_ip=ipv4
fi
fi
sysrepocfg -f json -X -d operational -x "/ietf-routing:routing/ribs" | \
- /usr/libexec/statd/cli-pretty "ietf-routing" -n "$KLISH_PARAM_name"
+ /usr/libexec/statd/cli-pretty "show-routing-table" -i "$KLISH_PARAM_ip"
sysrepocfg -f json -X -d operational -x "/ietf-hardware:hardware" | \
- /usr/libexec/statd/cli-pretty "ietf-hardware"
+ /usr/libexec/statd/cli-pretty "show-hardware"
@@ -347,10 +347,10 @@
if [ -n "$KLISH_PARAM_name" ]; then
sysrepocfg -f json -X -d operational -x \
"/ietf-interfaces:interfaces/interface[name='$KLISH_PARAM_name']" | \
- /usr/libexec/statd/cli-pretty "ietf-interfaces" -n "$KLISH_PARAM_name"
+ /usr/libexec/statd/cli-pretty "show-interfaces" -n "$KLISH_PARAM_name"
else
sysrepocfg -f json -X -d operational -m ietf-interfaces | \
- /usr/libexec/statd/cli-pretty "ietf-interfaces"
+ /usr/libexec/statd/cli-pretty "show-interfaces"
fi
diff --git a/src/statd/cli-pretty b/src/statd/cli-pretty
index bb0ac883..9c6660d1 100755
--- a/src/statd/cli-pretty
+++ b/src/statd/cli-pretty
@@ -4,11 +4,6 @@ import json
import re
import sys
-parser = argparse.ArgumentParser(description="JSON CLI Pretty Printer")
-parser.add_argument("module", help="IETF Module")
-parser.add_argument("-n", "--name", help="Focus on specific name")
-args = parser.parse_args()
-
class Pad:
iface = 16
proto = 11
@@ -434,7 +429,7 @@ def pr_interface_list(json):
iface.pr_proto_ipv4()
iface.pr_proto_ipv6()
-def ietf_interfaces(json, name):
+def show_interfaces(json, name):
if name:
if not json.get("ietf-interfaces:interfaces"):
print(f"No interface data found for \"{name}\"")
@@ -450,7 +445,7 @@ def ietf_interfaces(json, name):
sys.exit(1)
pr_interface_list(json)
-def ietf_routing(json, ip="ipv4"):
+def show_routing_table(json, ip):
if not json.get("ietf-routing:routing"):
print(f"Error, top level \"ietf-routing:routing\" missing")
sys.exit(1)
@@ -476,7 +471,7 @@ def find_slot(_slots, name):
return False
-def infix_system(json, name):
+def show_software(json, name):
if not json.get("ietf-system:system-state", "infix-system:software"):
print("Error, cannot find infix-system:software")
sys.exit(1)
@@ -497,7 +492,7 @@ def infix_system(json, name):
if slot.is_rootfs():
slot.print()
-def ietf_hardware(json):
+def show_hardware(json):
if not json.get("ietf-hardware:hardware"):
print(f"Error, top level \"ietf-hardware:component\" missing")
sys.exit(1)
@@ -525,16 +520,33 @@ def main():
print("Error, unexpected error parsing JSON")
sys.exit(1)
- if args.module == "ietf-interfaces":
- sys.exit(ietf_interfaces(json_data, args.name))
- if args.module == "ietf-routing":
- sys.exit(ietf_routing(json_data, args.name))
- if args.module == "infix-system":
- sys.exit(infix_system(json_data, args.name))
- if args.module == "ietf-hardware":
- sys.exit(ietf_hardware(json_data))
+
+ parser = argparse.ArgumentParser(description="JSON CLI Pretty Printer")
+ subparsers = parser.add_subparsers(dest='command', help='Commands')
+
+ parser_show_routing_table = subparsers.add_parser('show-routing-table', help='Show the routing table')
+ parser_show_routing_table.add_argument('-i', '--ip', required=True, help='IPv4 or IPv6 address')
+
+ parser_show_interfaces = subparsers.add_parser('show-interfaces', help='Show interfaces')
+ parser_show_interfaces.add_argument('-n', '--name', help='Interface name')
+
+ parser_show_software = subparsers.add_parser('show-software', help='Show software versions')
+ parser_show_software.add_argument('-n', '--name', help='Slotname')
+
+ parser_show_routing_table = subparsers.add_parser('show-hardware', help='Show USB ports')
+
+ args = parser.parse_args()
+
+ if args.command == "show-interfaces":
+ show_interfaces(json_data, args.name)
+ elif args.command == "show-routing-table":
+ show_routing_table(json_data, args.ip)
+ elif args.command == "show-software":
+ show_software(json_data, args.name)
+ elif args.command == "show-hardware":
+ show_hardware(json_data)
else:
- print(f"Error, unknown module {args.module}")
+ print(f"Error, unknown command {args.command}")
sys.exit(1)
if __name__ == "__main__":
diff --git a/test/case/cli/run.sh b/test/case/cli/run.sh
index 33b3a1fe..98cf8828 100755
--- a/test/case/cli/run.sh
+++ b/test/case/cli/run.sh
@@ -48,15 +48,15 @@ if [ ! -e "$CLI_PRETTY_TOOL" ]; then
fi
if [ $# -eq 2 ] && [ $1 = "update" ]; then
- if [ $2 = "ietf-interfaces" ]; then
- "$SR_EMULATOR_TOOL" | "$CLI_PRETTY_TOOL" "ietf-interfaces" > "$CLI_OUTPUT_PATH/show-interfaces.txt"
+ if [ $2 = "show-interfaces" ]; then
+ "$SR_EMULATOR_TOOL" | "$CLI_PRETTY_TOOL" "show-interfaces" > "$CLI_OUTPUT_PATH/show-interfaces.txt"
for iface in "br0" "e0" "e1" "e2" "e3" "e4"; do
- "$SR_EMULATOR_TOOL" | "$CLI_PRETTY_TOOL" "ietf-interfaces" -n "$iface" \
+ "$SR_EMULATOR_TOOL" | "$CLI_PRETTY_TOOL" "show-interfaces" -n "$iface" \
> "$CLI_OUTPUT_PATH/show-interface-${iface}.txt"
done
- elif [ $2 = "ietf-routing" ]; then
- "$SR_EMULATOR_TOOL" | "$CLI_PRETTY_TOOL" "ietf-routing" -n "ipv4" > "$CLI_OUTPUT_PATH/show-routes-ipv4.txt"
- "$SR_EMULATOR_TOOL" | "$CLI_PRETTY_TOOL" "ietf-routing" -n "ipv6" > "$CLI_OUTPUT_PATH/show-routes-ipv6.txt"
+ elif [ $2 = "show-routing-table" ]; then
+ "$SR_EMULATOR_TOOL" | "$CLI_PRETTY_TOOL" "show-routing-table" -i "ipv4" > "$CLI_OUTPUT_PATH/show-routes-ipv4.txt"
+ "$SR_EMULATOR_TOOL" | "$CLI_PRETTY_TOOL" "show-routing-table" -i "ipv6" > "$CLI_OUTPUT_PATH/show-routes-ipv6.txt"
else
echo "Unsupported model $2"
exit 1
@@ -69,9 +69,9 @@ echo "1..9"
echo "# Running:"
# Show interfaces
-echo "# $SR_EMULATOR_TOOL | $CLI_PRETTY_TOOL ietf-interfaces"
-"$SR_EMULATOR_TOOL" | "$CLI_PRETTY_TOOL" "ietf-interfaces" > "$CLI_OUTPUT_FILE"
-# Show routes
+echo "# $SR_EMULATOR_TOOL | $CLI_PRETTY_TOOL show-interfaces"
+"$SR_EMULATOR_TOOL" | "$CLI_PRETTY_TOOL" "show-interfaces" > "$CLI_OUTPUT_FILE"
+
if ! diff -u "$CLI_OUTPUT_PATH/show-interfaces.txt" "$CLI_OUTPUT_FILE"; then
print_update_txt
fail "\"show interfaces\" output has changed"
@@ -79,9 +79,9 @@ fi
ok "\"show interfaces\" output looks intact"
# Show ipv4 routes
-echo "# $SR_EMULATOR_TOOL | $CLI_PRETTY_TOOL ietf-routing -n ipv4"
-"$SR_EMULATOR_TOOL" | "$CLI_PRETTY_TOOL" "ietf-routing" -n "ipv4" > "$CLI_OUTPUT_FILE"
-# Show routes
+echo "# $SR_EMULATOR_TOOL | $CLI_PRETTY_TOOL show-routing-table -i ipv4"
+"$SR_EMULATOR_TOOL" | "$CLI_PRETTY_TOOL" "show-routing-table" -i "ipv4" > "$CLI_OUTPUT_FILE"
+
if ! diff -u "$CLI_OUTPUT_PATH/show-routes-ipv4.txt" "$CLI_OUTPUT_FILE"; then
print_update_txt
fail "\"show routes ipv4\" output has changed"
@@ -89,10 +89,9 @@ fi
ok "\"show routes ipv4\" output looks intact"
# Show ipv6 routes
-echo "# $SR_EMULATOR_TOOL | $CLI_PRETTY_TOOL ietf-routing -n ipv6"
-"$SR_EMULATOR_TOOL" | "$CLI_PRETTY_TOOL" "ietf-routing" -n "ipv6" > "$CLI_OUTPUT_FILE"
+echo "# $SR_EMULATOR_TOOL | $CLI_PRETTY_TOOL show-routing-table -i ipv6"
+"$SR_EMULATOR_TOOL" | "$CLI_PRETTY_TOOL" "show-routing-table" -i "ipv6" > "$CLI_OUTPUT_FILE"
-# Show routes
if ! diff -u "$CLI_OUTPUT_PATH/show-routes-ipv6.txt" "$CLI_OUTPUT_FILE"; then
print_update_txt
fail "\"show routes ipv6\" output has changed"
@@ -101,11 +100,10 @@ ok "\"show routes ipv6\" output looks intact"
# Show detailed interfaces
for iface in "br0" "e0" "e1" "e2" "e3" "e4"; do
- "$SR_EMULATOR_TOOL" | "$CLI_PRETTY_TOOL" "ietf-interfaces" -n "$iface" > "$CLI_OUTPUT_FILE"
+ "$SR_EMULATOR_TOOL" | "$CLI_PRETTY_TOOL" "show-interfaces" -n "$iface" > "$CLI_OUTPUT_FILE"
if ! diff -u "$CLI_OUTPUT_PATH/show-interface-${iface}.txt" "$CLI_OUTPUT_FILE"; then
print_update_txt
fail "\"show interface name $iface\" output has changed"
fi
ok "\"show interface name $iface\" output looks intact"
done
-
diff --git a/test/case/cli_pretty/all.yaml b/test/case/cli_pretty/all.yaml
index b6198eec..64de1bf6 100644
--- a/test/case/cli_pretty/all.yaml
+++ b/test/case/cli_pretty/all.yaml
@@ -3,37 +3,37 @@
name: "interfaces-empty"
opts:
- "json/empty.json"
- - "ietf-interfaces"
+ - "show-interfaces"
- case: run.sh
name: "interfaces-factory"
opts:
- "json/factory.json"
- - "ietf-interfaces"
+ - "show-interfaces"
- case: run.sh
name: "interfaces-bloated"
opts:
- "json/bloated.json"
- - "ietf-interfaces"
+ - "show-interfaces"
- case: run.sh
name: "interface-ethernet"
opts:
- "json/bloated.json"
- - "ietf-interfaces"
+ - "show-interfaces"
- "-n e0"
- case: run.sh
name: "interface-vlan"
opts:
- "json/bloated.json"
- - "ietf-interfaces"
+ - "show-interfaces"
- "-n vlan1"
- case: run.sh
name: "interface-bridge"
opts:
- "json/bloated.json"
- - "ietf-interfaces"
+ - "show-interfaces"
- "-n br0"
diff --git a/test/case/cli_pretty/run.sh b/test/case/cli_pretty/run.sh
index 3901861b..1d63d4ae 100755
--- a/test/case/cli_pretty/run.sh
+++ b/test/case/cli_pretty/run.sh
@@ -3,12 +3,12 @@
SCRIPT_PATH="$(dirname "$(readlink -f "$0")")"
if [ $# -lt 2 ]; then
- echo "Usage: $0 JSON-FILE MODULE [ ARGS ]"
+ echo "Usage: $0 JSON-FILE COMMAND [ ARGS ]"
exit 1
fi
json=$1; shift
-module=$1; shift
+command=$1; shift
echo "1..1"
@@ -19,7 +19,7 @@ fi
cat "$SCRIPT_PATH/$json" | \
"$SCRIPT_PATH"/../../../src/statd/cli-pretty \
- "$module" $*
+ "$command" $*
if [ $? -eq 0 ]; then
echo "ok 1 - $json printed without crashing"
exit 0