aboutsummaryrefslogtreecommitdiffstats
path: root/tools/draw-neighbors.pl
diff options
context:
space:
mode:
Diffstat (limited to 'tools/draw-neighbors.pl')
-rwxr-xr-xtools/draw-neighbors.pl36
1 files changed, 36 insertions, 0 deletions
diff --git a/tools/draw-neighbors.pl b/tools/draw-neighbors.pl
new file mode 100755
index 0000000..a9abc79
--- /dev/null
+++ b/tools/draw-neighbors.pl
@@ -0,0 +1,36 @@
+#!/usr/bin/perl
+
+use strict;
+use JSON;
+
+my $in;
+while (<STDIN>) {
+ $in .= $_;
+}
+
+my %assets = %{JSON::XS::decode_json($in)};
+
+print "Drawing family tree from JSON:\n\n";
+while (my ($key, $value) = each %assets) {
+ print_tree ($key,0,undef);
+ last;
+}
+sub print_tree
+{
+ my ($chassis_id,$indent,$parent,$max) = @_;
+ if (!defined($parent)) {
+ $parent = "";
+ }
+ if ($indent > 50) {
+ die "Possible loop detected.";
+ }
+ for (my $i = 0; $i < $indent; $i++) {
+ print "\t";
+ }
+ print " - " . $assets{$chassis_id}{sysName} . "\n";
+ while (my ($key, $value) = each %{$assets{$chassis_id}{neighbors}}) {
+ if ($key ne $parent) {
+ print_tree($key,$indent+1,$chassis_id);
+ }
+ }
+}