diff --git a/Netdisco/Changes b/Netdisco/Changes index dda7f5a0..49fa7e54 100644 --- a/Netdisco/Changes +++ b/Netdisco/Changes @@ -1,3 +1,9 @@ +2.025000 - + + [ENHANCEMENTS] + + * Use daterange for IP Subnets (same as IP Inventory) + 2.024004 - 2014-03-04 [BUG FIXES] diff --git a/Netdisco/lib/App/Netdisco/DB/Result/Virtual/SubnetUtilization.pm b/Netdisco/lib/App/Netdisco/DB/Result/Virtual/SubnetUtilization.pm index 32c97f63..372b5e51 100644 --- a/Netdisco/lib/App/Netdisco/DB/Result/Virtual/SubnetUtilization.pm +++ b/Netdisco/lib/App/Netdisco/DB/Result/Virtual/SubnetUtilization.pm @@ -20,15 +20,16 @@ __PACKAGE__->result_source_instance->view_definition(<<'ENDSQL'); FROM subnets s1, node_ip ni WHERE s1.net <<= ?::cidr AND ni.ip <<= s1.net - AND ni.time_last > (now() - ?::interval) - AND s1.last_discover > (now() - ?::interval) + AND ni.time_last >= ? + AND ni.time_last <= ? + AND s1.last_discover >= ? UNION SELECT DISTINCT net, di.alias as ip FROM subnets s2, device_ip di JOIN device d USING (ip) WHERE s2.net <<= ?::cidr AND di.alias <<= s2.net - AND s2.last_discover > (now() - ?::interval) - AND d.last_discover > (now() - ?::interval) + AND s2.last_discover >= ? + AND d.last_discover >= ? ) as joined GROUP BY net ORDER BY percent ASC diff --git a/Netdisco/lib/App/Netdisco/Web/Plugin/Report/SubnetUtilization.pm b/Netdisco/lib/App/Netdisco/Web/Plugin/Report/SubnetUtilization.pm index f876da7a..38af9706 100644 --- a/Netdisco/lib/App/Netdisco/Web/Plugin/Report/SubnetUtilization.pm +++ b/Netdisco/lib/App/Netdisco/Web/Plugin/Report/SubnetUtilization.pm @@ -5,7 +5,6 @@ use Dancer::Plugin::DBIC; use Dancer::Plugin::Auth::Extensible; use App::Netdisco::Web::Plugin; -use App::Netdisco::Util::Web (); # for interval_to_daterange register_report({ category => 'IP', @@ -16,19 +15,22 @@ register_report({ get '/ajax/content/report/subnets' => require_login sub { my $subnet = param('subnet') || '0.0.0.0/32'; - my $age = param('age') || '7 days'; - $age = '7 days' unless $age =~ m/^(?:\d+)\s+(?:day|week|month|year)s?$/; + my $agenot = param('age_invert') || '0'; + my ( $start, $end ) = param('daterange') =~ /(\d+-\d+-\d+)/gmx; - my $daterange = App::Netdisco::Util::Web::interval_to_daterange($age); + if ($agenot) { + my $tmp = $end; + $end = $start; + $start = $tmp; + } my $set = schema('netdisco')->resultset('Virtual::SubnetUtilization') ->search(undef,{ - bind => [ $subnet, $age, $age, $subnet, $age, $age ], + bind => [ $subnet, $start, $end, $end, $subnet, $end, $end ], }); if ( request->is_ajax ) { - template 'ajax/report/subnets.tt', - { results => $set, daterange => $daterange }, + template 'ajax/report/subnets.tt', { results => $set }, { layout => undef }; } else { diff --git a/Netdisco/share/views/sidebar/report/subnets.tt b/Netdisco/share/views/sidebar/report/subnets.tt index 3478114b..9679d1ab 100644 --- a/Netdisco/share/views/sidebar/report/subnets.tt +++ b/Netdisco/share/views/sidebar/report/subnets.tt @@ -8,19 +8,21 @@