show port error disable state in device ports view

This commit is contained in:
Oliver Gorwits
2018-02-22 07:27:11 +00:00
parent 5584865052
commit b69ad22a52
5 changed files with 42 additions and 5 deletions

View File

@@ -175,8 +175,7 @@ device port.
__PACKAGE__->might_have( properties => 'App::Netdisco::DB::Result::DevicePortProperties', {
'foreign.ip' => 'self.ip', 'foreign.port' => 'self.port',
}, { join_type => 'LEFT OUTER' }
);
});
=head2 ssid
@@ -308,6 +307,15 @@ ID assigned to untagged frames received on the port).
sub native { return (shift)->vlan }
=head2 error_disable_cause
Returns the textual reason given by the device if the port is in an error
state, or else `undef` if the port is not in an error state.
=cut
sub error_disable_cause { return (shift)->get_column('properties_error_disable_cause') }
=head2 vlan_count
Returns the number of VLANs active on this device port. Enable this column by

View File

@@ -104,6 +104,32 @@ sub only_free_ports {
);
}
=head2 with_properties
This is a modifier for any C<search()> which
will add the following additional synthesized columns to the result set:
=over 4
=item error_disable_cause
=back
=cut
sub with_properties {
my ($rs, $cond, $attrs) = @_;
return $rs
->search_rs($cond, $attrs)
->search({},
{
'+select' => ['properties.error_disable_cause'],
'+as' => ['properties_error_disable_cause'],
join => 'properties',
});
}
=head2 with_vlan_count
This is a modifier for any C<search()> (including the helpers below) which

View File

@@ -18,7 +18,7 @@ get '/ajax/content/device/ports' => require_login sub {
my $device = schema('netdisco')->resultset('Device')
->search_for_device($q) or send_error('Bad device', 400);
my $set = $device->ports;
my $set = $device->ports->with_properties;
# refine by ports if requested
my $f = param('f');

View File

@@ -25,7 +25,9 @@
[% IF row.up_admin != 'up' %]
<i class="icon-remove"></i>
[% ELSIF row.up == 'up' AND row.stp == 'blocking' AND vlans.$portname.vlan_count < 2 %]
<i class="icon-fullscreen text-info"></i>
<i class="icon-ban-circle text-info"></i>
[% ELSIF row.error_disable_cause %]
<i class="icon-exclamation-sign text-error"></i>
[% ELSIF row.has_column_loaded('is_free') AND row.is_free %]
<i class="icon-arrow-down text-success"></i>
[% ELSIF row.up_admin == 'up' AND (row.up != 'up' AND row.up != 'dormant') %]

View File

@@ -36,7 +36,8 @@
<li><i class="icon-li icon-arrow-down text-error"></i>&nbsp; Link Down</li>
<li><i class="icon-li icon-arrow-down text-success"></i>&nbsp; Port Free</li>
<li><i class="icon-li icon-remove"></i>&nbsp; Admin Disabled</li>
<li><i class="icon-li icon-fullscreen text-info"></i>&nbsp; Blocking</li>
<li><i class="icon-li icon-exclamation-sign text-error"></i>&nbsp; Error Disabled</li>
<li><i class="icon-li icon-ban-circle text-info"></i>&nbsp; Blocking</li>
<li><i class="icon-li icon-link text-warning"></i>&nbsp; Manual Topology</li>
<li><i class="icon-li icon-link"></i>&nbsp; Neighbor Device</li>
<li><i class="icon-li icon-unlink text-error"></i>&nbsp; Neighbor Inacessible</li>