#897 port free should only apply to physical interfaces
This commit is contained in:
@@ -12,18 +12,22 @@ __PACKAGE__->table('port_utilization');
|
||||
__PACKAGE__->result_source_instance->is_virtual(1);
|
||||
__PACKAGE__->result_source_instance->view_definition(<<ENDSQL
|
||||
SELECT d.dns AS dns, d.ip as ip,
|
||||
sum(CASE WHEN (dp.type != 'propVirtual') THEN 1
|
||||
sum(CASE WHEN (dp.type IS NULL OR dp.type !~* '^(53|ieee8023adLag|propVirtual|l2vlan|l3ipvlan|135|136|137)\$') THEN 1
|
||||
ELSE 0 END) as port_count,
|
||||
sum(CASE WHEN (dp.type != 'propVirtual' AND dp.up_admin = 'up' AND dp.up = 'up') THEN 1
|
||||
sum(CASE WHEN ((dp.type IS NULL OR dp.type !~* '^(53|ieee8023adLag|propVirtual|l2vlan|l3ipvlan|135|136|137)\$')
|
||||
AND dp.up_admin = 'up' AND dp.up = 'up') THEN 1
|
||||
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 IS NULL OR dp.type !~* '^(53|ieee8023adLag|propVirtual|l2vlan|l3ipvlan|135|136|137)\$')
|
||||
AND dp.up_admin != 'up') THEN 1
|
||||
ELSE 0 END) as ports_shutdown,
|
||||
sum(CASE
|
||||
WHEN ( dp.type != 'propVirtual' AND dp.up_admin = 'up' AND dp.up != 'up'
|
||||
WHEN ( (dp.type IS NULL OR dp.type !~* '^(53|ieee8023adLag|propVirtual|l2vlan|l3ipvlan|135|136|137)\$')
|
||||
AND dp.up_admin = 'up' AND dp.up != 'up'
|
||||
AND (age(now(), to_timestamp(extract(epoch from d.last_discover) - (d.uptime/100))) < ?::interval)
|
||||
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'
|
||||
WHEN ( (dp.type IS NULL OR dp.type !~* '^(53|ieee8023adLag|propVirtual|l2vlan|l3ipvlan|135|136|137)\$')
|
||||
AND dp.up_admin = 'up' AND dp.up != 'up'
|
||||
AND (age(now(), to_timestamp(extract(epoch from d.last_discover) - (d.uptime - dp.lastchange)/100)) > ?::interval) )
|
||||
THEN 1
|
||||
ELSE 0
|
||||
|
||||
@@ -670,7 +670,10 @@ sub with_port_count {
|
||||
->search(
|
||||
{
|
||||
'dp.ip' => { -ident => 'me.ip' },
|
||||
'dp.type' => { '!=' => 'propVirtual' },
|
||||
'dp.type' => [ '-or' =>
|
||||
{ '=' => undef },
|
||||
{ '!~*' => '^(53|ieee8023adLag|propVirtual|l2vlan|l3ipvlan|135|136|137)$' },
|
||||
],
|
||||
},
|
||||
{ alias => 'dp' }
|
||||
)->count_rs->as_query,
|
||||
|
||||
@@ -68,7 +68,8 @@ sub with_is_free {
|
||||
{
|
||||
'+columns' => { is_free =>
|
||||
# NOTE this query is in `git grep 'THREE PLACES'`
|
||||
\["me.up_admin = 'up' AND me.up != 'up' AND me.type != 'propVirtual' AND "
|
||||
\["me.up_admin = 'up' AND me.up != 'up' AND "
|
||||
."(me.type IS NULL OR me.type !~* '^(53|ieee8023adLag|propVirtual|l2vlan|l3ipvlan|135|136|137)\$') AND "
|
||||
."((age(now(), to_timestamp(extract(epoch from device.last_discover) - (device.uptime/100))) < ?::interval "
|
||||
."AND (last_node.time_last IS NULL OR age(now(), last_node.time_last) > ?::interval)) "
|
||||
."OR age(now(), to_timestamp(extract(epoch from device.last_discover) - (device.uptime - me.lastchange)/100)) > ?::interval)",
|
||||
@@ -100,7 +101,10 @@ sub only_free_ports {
|
||||
# NOTE this query is in `git grep 'THREE PLACES'`
|
||||
'me.up_admin' => 'up',
|
||||
'me.up' => { '!=' => 'up' },
|
||||
'me.type' => { '!=' => 'propVirtual' },
|
||||
'me.type' => [ '-or' =>
|
||||
{ '=' => undef },
|
||||
{ '!~*' => '^(53|ieee8023adLag|propVirtual|l2vlan|l3ipvlan|135|136|137)$' },
|
||||
],
|
||||
-or => [
|
||||
-and => [
|
||||
\["age(now(), to_timestamp(extract(epoch from device.last_discover) - (device.uptime/100))) < ?::interval",
|
||||
|
||||
Reference in New Issue
Block a user