working free ports after reboot but bug: row expansion
This commit is contained in:
@@ -17,11 +17,28 @@ __PACKAGE__->result_source_instance->view_definition(<<ENDSQL
|
|||||||
ELSE 0 END) as ports_in_use,
|
ELSE 0 END) as ports_in_use,
|
||||||
sum(CASE WHEN (dp.type != 'propVirtual' AND dp.up_admin != 'up') THEN 1
|
sum(CASE WHEN (dp.type != 'propVirtual' AND dp.up_admin != 'up') THEN 1
|
||||||
ELSE 0 END) as ports_shutdown,
|
ELSE 0 END) as ports_shutdown,
|
||||||
sum(CASE WHEN (dp.type != 'propVirtual' AND dp.up_admin = 'up' AND dp.up != 'up'
|
sum(CASE
|
||||||
AND ( age(now(), to_timestamp(extract(epoch from d.last_discover) - (d.uptime - dp.lastchange)/100)) > ?::interval )) THEN 1
|
WHEN ( dp.type != 'propVirtual' AND dp.up_admin = 'up' AND dp.up != 'up'
|
||||||
ELSE 0 END) as ports_free
|
AND (age(now(), to_timestamp(extract(epoch from d.last_discover) - (d.uptime/100))) < ?::interval)
|
||||||
FROM device d LEFT JOIN device_port dp
|
AND (last_node.time_last IS NULL OR (age(now(), last_node.time_last)) > ?::interval) )
|
||||||
|
THEN 1
|
||||||
|
WHEN ( dp.type != 'propVirtual' AND dp.up_admin = 'up' AND dp.up != 'up'
|
||||||
|
AND (last_node.time_last IS NULL OR
|
||||||
|
(age(now(), to_timestamp(extract(epoch from d.last_discover) - (d.uptime - dp.lastchange)/100)) > ?::interval)) )
|
||||||
|
THEN 1
|
||||||
|
ELSE 0
|
||||||
|
END) as ports_free
|
||||||
|
FROM device d
|
||||||
|
LEFT JOIN device_port dp
|
||||||
ON d.ip = dp.ip
|
ON d.ip = dp.ip
|
||||||
|
LEFT JOIN node last_node
|
||||||
|
ON last_node.mac = (
|
||||||
|
SELECT lastnodesub.mac
|
||||||
|
FROM node lastnodesub
|
||||||
|
WHERE port = dp.port AND switch = dp.ip
|
||||||
|
ORDER BY time_last DESC
|
||||||
|
LIMIT '1'
|
||||||
|
)
|
||||||
GROUP BY d.dns, d.ip
|
GROUP BY d.dns, d.ip
|
||||||
ORDER BY d.dns, d.ip
|
ORDER BY d.dns, d.ip
|
||||||
ENDSQL
|
ENDSQL
|
||||||
|
|||||||
@@ -96,14 +96,22 @@ sub only_free_ports {
|
|||||||
->search_rs($cond, $attrs)
|
->search_rs($cond, $attrs)
|
||||||
->search(
|
->search(
|
||||||
{
|
{
|
||||||
'me.up' => { '!=' => 'up' },
|
'me.up_admin' => 'up',
|
||||||
},{
|
'me.up' => { '!=' => 'up' },
|
||||||
where =>
|
'me.type' => { '!=' => 'propVirtual' },
|
||||||
\["age(now(), to_timestamp(extract(epoch from device.last_discover) "
|
-or => [
|
||||||
."- (device.uptime - me.lastchange)/100)) "
|
-and => [
|
||||||
."> ?::interval",
|
\["age(now(), to_timestamp(extract(epoch from device.last_discover) - (device.uptime/100))) < ?::interval",
|
||||||
|
[{} => $interval]],
|
||||||
|
-or => [
|
||||||
|
'last_node.time_last' => undef,
|
||||||
|
\["age(now(), last_node.time_last) > ?::interval", [{} => $interval]],
|
||||||
|
]
|
||||||
|
],
|
||||||
|
\["age(now(), to_timestamp(extract(epoch from device.last_discover) - (device.uptime - me.lastchange)/100)) > ?::interval",
|
||||||
[{} => $interval]],
|
[{} => $interval]],
|
||||||
join => 'device' },
|
],
|
||||||
|
},{ join => [qw/device last_node/] },
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -20,7 +20,7 @@ get '/ajax/content/report/portutilization' => require_login sub {
|
|||||||
my $age_num = param('age_num') || 3;
|
my $age_num = param('age_num') || 3;
|
||||||
my $age_unit = param('age_unit') || 'months';
|
my $age_unit = param('age_unit') || 'months';
|
||||||
my @results = schema('netdisco')->resultset('Virtual::PortUtilization')
|
my @results = schema('netdisco')->resultset('Virtual::PortUtilization')
|
||||||
->search(undef, { bind => [ "$age_num $age_unit" ] })->hri->all;
|
->search(undef, { bind => [ "$age_num $age_unit", "$age_num $age_unit", "$age_num $age_unit" ] })->hri->all;
|
||||||
|
|
||||||
if (request->is_ajax) {
|
if (request->is_ajax) {
|
||||||
my $json = to_json (\@results);
|
my $json = to_json (\@results);
|
||||||
|
|||||||
Reference in New Issue
Block a user