From: levinse Date: Mon, 7 Feb 2011 23:22:34 +0000 (+0000) Subject: torrus, UI, RT10574 X-Git-Tag: freeside_2_3_0~638 X-Git-Url: http://git.freeside.biz/gitweb/?p=freeside.git;a=commitdiff_plain;h=d98bc0d258abe1bf1b059af7dc701ba3631fd228 torrus, UI, RT10574 --- diff --git a/FS/FS/NetworkMonitoringSystem/Torrus_Internal.pm b/FS/FS/NetworkMonitoringSystem/Torrus_Internal.pm index 736d178fa..d55bfc35b 100644 --- a/FS/FS/NetworkMonitoringSystem/Torrus_Internal.pm +++ b/FS/FS/NetworkMonitoringSystem/Torrus_Internal.pm @@ -9,6 +9,7 @@ use Date::Format; use XML::Simple; use FS::svc_port; use FS::Record qw(qsearch); +use Torrus::ConfigTree; #$DEBUG = 0; #$me = '[FS::NetworkMonitoringSystem::Torrus_Internal]'; @@ -24,20 +25,26 @@ sub new { return $self; } -sub get_router_serviceids { +sub ddx2hash { my $self = shift; - my $router = shift; - my $ddx_xml = slurp($ddxfile); my $xs = new XML::Simple(RootName=> undef, SuppressEmpty => '', ForceArray => 1, ); - my $ddx_hash = $xs->XMLin($ddx_xml); + return $xs->XMLin($ddx_xml); +} + +sub get_router_serviceids { + my $self = shift; + my $router = shift; + my $find_serviceid = shift; + my $found_serviceid = 0; + my $ddx_hash = $self->ddx2hash; if($ddx_hash->{host}){ my @hosts = @{$ddx_hash->{host}}; foreach my $host ( @hosts ) { my $param = $host->{param}; if($param && $param->{'snmp-host'} - && $param->{'snmp-host'}->{'value'} eq $router + && (!$router || $param->{'snmp-host'}->{'value'} eq $router) && $param->{'RFC2863_IF_MIB::external-serviceid'}) { my $serviceids = $param->{'RFC2863_IF_MIB::external-serviceid'}->{'content'}; my %hash = (); @@ -47,16 +54,33 @@ sub get_router_serviceids { $serviceid =~ s/^\s+|\s+$//g; my @s = split(':',$serviceid); next unless scalar(@s) == 4; - $hash{$s[1]} = $s[0]; + $hash{$s[1]} = $s[0] if $router; + if ($find_serviceid && $find_serviceid eq $s[0]) { + $hash{$param->{'snmp-host'}->{'value'}} = $s[1]; + $found_serviceid = 1; + } } } - return \%hash; + return \%hash if ($router || $found_serviceid); } } } ''; } +sub port_graphs_link { + # hardcoded for 'main' tree for now + my $self = shift; + my $serviceid = shift; + my $hash = $self->get_router_serviceids(undef,$serviceid); + my @keys = keys %$hash; # yeah this is weird... + my $host = $keys[0]; + my $iface = $hash->{$keys[0]}; + my $config_tree = new Torrus::ConfigTree( -TreeName => 'main' ); + my $token = $config_tree->token("/Routers/$host/Interface_Counters/$iface/InOut_bps"); + return $Torrus::Freeside::FSURL."/torrus/main?token=$token"; +} + sub find_svc { my $self = shift; my $serviceid = shift; diff --git a/httemplate/view/svc_port.cgi b/httemplate/view/svc_port.cgi index eec803d5a..a2b12b778 100644 --- a/httemplate/view/svc_port.cgi +++ b/httemplate/view/svc_port.cgi @@ -20,16 +20,6 @@ my %labels = map { $_ => ( ref($fields->{$_}) } keys %$fields; my @fields = keys %$fields; -my $svcnum; -if ( $cgi->param('svcnum') ) { - $cgi->param('svcnum') =~ /^(\d+)$/ or die "unparsable svcnum"; - $svcnum = $1; -} else { - my($query) = $cgi->keywords; - $query =~ /^(\d+)$/ or die "no svcnum"; - $svcnum = $1; -} - my $start = $cgi->param('start'); my $end = $cgi->param('end'); @@ -42,10 +32,15 @@ sub preset_range { } my $html_foot = sub { + my $svc_port = shift; + my $svcnum = $svc_port->svcnum; my $default_end = time; my $default_start = $default_end-86400; my $graph = ''; + my $nms = new FS::NetworkMonitoringSystem; + my $link = $nms->port_graphs_link($svc_port->serviceid); + if($start && $end) { $graph = "

"; @@ -60,6 +55,7 @@ my $html_foot = sub {
+ Torrus Graphs

Bandwidth Graph
  '.preset_range($default_start,$default_end,'Last Day',$date_format) .' | '.preset_range($default_end-86400*7,$default_end,'Last Week',$date_format)