diff options
| author | levinse <levinse> | 2011-02-07 23:22:34 +0000 | 
|---|---|---|
| committer | levinse <levinse> | 2011-02-07 23:22:34 +0000 | 
| commit | d98bc0d258abe1bf1b059af7dc701ba3631fd228 (patch) | |
| tree | 9e5838d63725fdced222072f1798ebc03df95769 /FS | |
| parent | 8c37ba9a0caeffdbe133968750f5b4d1e7b7fb69 (diff) | |
torrus, UI, RT10574
Diffstat (limited to 'FS')
| -rw-r--r-- | FS/FS/NetworkMonitoringSystem/Torrus_Internal.pm | 38 | 
1 files changed, 31 insertions, 7 deletions
| 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; | 
