From 800aa0b4f0fad2e4f60ddc4dca71b9c81f78d6e9 Mon Sep 17 00:00:00 2001 From: Max Baker <> Date: Fri, 13 Feb 2004 05:15:32 +0000 Subject: [PATCH] Added device matrix graphing fun --- t/make_dev_matrix.pl | 32 +++++++++++++++++++++++++++++--- 1 file changed, 29 insertions(+), 3 deletions(-) diff --git a/t/make_dev_matrix.pl b/t/make_dev_matrix.pl index 3d444893..de59a461 100755 --- a/t/make_dev_matrix.pl +++ b/t/make_dev_matrix.pl @@ -12,10 +12,30 @@ $matrix = parse_data($DevMatrix); # Graph it for fun eval "use GraphViz::Data::Structure;"; -if ($@ or 1) { - print "GraphViz::Data::Structure not installed.\n"; +if ($@) { + print "GraphViz::Data::Structure not installed. $@\n"; } else { - my $gvds = GraphViz::Data::Structure->new($matrix); + my %graph = (); + foreach my $vendor (sort sort_nocase keys %$matrix){ + $graph{$vendor} = {}; + foreach my $family (sort sort_nocase keys %{$matrix->{$vendor}->{families}} ){ + my @models; + foreach my $mod (keys %{$matrix->{$vendor}->{families}->{$family}->{models}}){ + push(@models,split(/\s*,\s*/,$mod)); + } + if (scalar @models){ + $graph{$vendor}->{$family}=\@models; + } else { + $graph{$vendor}->{$family}=[]; + } + + } + } + my $gvds = GraphViz::Data::Structure->new(\%graph,Orientation=>'vertical', + Colors=> 'Deep', + graph => {label=>'SNMP::Info and Netdisco Supported Devices','fontpath'=>'/usr/local/netdisco','fontname'=>'lucon',concentrate=>'true','overlap'=>'false',spline=>'true',bgcolor=>'wheat'}, + node => {fontname=>'lucon'}, + ); $gvds->graph()->as_png($DevPNG); } @@ -94,6 +114,7 @@ close (HTML) or die "Can't write $DevHTML. $!\n"; # ( defaults => { cmd => [values] } ) sub parse_data { my $file = shift; + my %ignore = map { $_ => 1 } @_; my $Matrix; my @Lines; @@ -124,6 +145,9 @@ sub parse_data { next; } + if (exists $ignore{$cmd}){ + print "Ignoring $cmd\n"; + } # Set Class {vendor,family,device} if ($cmd eq 'device-vendor'){ $vendor = $value; @@ -225,6 +249,8 @@ sub html_tail { [Family Attribute] [Vendor Attribute]
| Arpnip |