register_report(
{
category
=>
'Node'
,
tag
=>
'nodesdiscovered'
,
label
=>
'Nodes discovered through LLDP/CDP'
,
provides_csv
=> 1,
}
);
get
'/ajax/content/report/nodesdiscovered'
=> require_login
sub
{
my
$op
= param(
'matchall'
) ?
'-and'
:
'-or'
;
my
@results
= schema(
'netdisco'
)->resultset(
'Virtual::NodesDiscovered'
)
->search({
$op
=> [
(param(
'aps'
) ?
(
'me.remote_type'
=> {
-ilike
=>
'AP:%'
}) : ()),
(param(
'phones'
) ?
(
'me.remote_type'
=> {
-ilike
=>
'%ip_phone%'
}) : ()),
(param(
'remote_id'
) ?
(
'me.remote_id'
=> {
-ilike
=>
scalar
sql_match(param(
'remote_id'
)) }) : ()),
(param(
'remote_type'
) ? (
'-or'
=> [
map
{(
'me.remote_type'
=> {
-ilike
=>
scalar
sql_match(
$_
) } )}
grep
{
$_
}
(
ref
param(
'remote_type'
) ? @{param(
'remote_type'
)} : param(
'remote_type'
))
]) : ()),
],
})
->hri->all;
return
unless
scalar
@results
;
if
( request->is_ajax ) {
my
$json
= to_json( \
@results
);
template
'ajax/report/nodesdiscovered.tt'
, {
results
=>
$json
},
{
layout
=>
undef
};
}
else
{
header(
'Content-Type'
=>
'text/comma-separated-values'
);
template
'ajax/report/nodesdiscovered_csv.tt'
,
{
results
=> \
@results
},
{
layout
=>
undef
};
}
};
1;