show port error disable state in device ports view
This commit is contained in:
@@ -175,8 +175,7 @@ device port.
|
|||||||
|
|
||||||
__PACKAGE__->might_have( properties => 'App::Netdisco::DB::Result::DevicePortProperties', {
|
__PACKAGE__->might_have( properties => 'App::Netdisco::DB::Result::DevicePortProperties', {
|
||||||
'foreign.ip' => 'self.ip', 'foreign.port' => 'self.port',
|
'foreign.ip' => 'self.ip', 'foreign.port' => 'self.port',
|
||||||
}, { join_type => 'LEFT OUTER' }
|
});
|
||||||
);
|
|
||||||
|
|
||||||
=head2 ssid
|
=head2 ssid
|
||||||
|
|
||||||
@@ -308,6 +307,15 @@ ID assigned to untagged frames received on the port).
|
|||||||
|
|
||||||
sub native { return (shift)->vlan }
|
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
|
=head2 vlan_count
|
||||||
|
|
||||||
Returns the number of VLANs active on this device port. Enable this column by
|
Returns the number of VLANs active on this device port. Enable this column by
|
||||||
|
|||||||
@@ -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
|
=head2 with_vlan_count
|
||||||
|
|
||||||
This is a modifier for any C<search()> (including the helpers below) which
|
This is a modifier for any C<search()> (including the helpers below) which
|
||||||
|
|||||||
@@ -18,7 +18,7 @@ get '/ajax/content/device/ports' => require_login sub {
|
|||||||
|
|
||||||
my $device = schema('netdisco')->resultset('Device')
|
my $device = schema('netdisco')->resultset('Device')
|
||||||
->search_for_device($q) or send_error('Bad device', 400);
|
->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
|
# refine by ports if requested
|
||||||
my $f = param('f');
|
my $f = param('f');
|
||||||
|
|||||||
@@ -25,7 +25,9 @@
|
|||||||
[% IF row.up_admin != 'up' %]
|
[% IF row.up_admin != 'up' %]
|
||||||
<i class="icon-remove"></i>
|
<i class="icon-remove"></i>
|
||||||
[% ELSIF row.up == 'up' AND row.stp == 'blocking' AND vlans.$portname.vlan_count < 2 %]
|
[% 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 %]
|
[% ELSIF row.has_column_loaded('is_free') AND row.is_free %]
|
||||||
<i class="icon-arrow-down text-success"></i>
|
<i class="icon-arrow-down text-success"></i>
|
||||||
[% ELSIF row.up_admin == 'up' AND (row.up != 'up' AND row.up != 'dormant') %]
|
[% ELSIF row.up_admin == 'up' AND (row.up != 'up' AND row.up != 'dormant') %]
|
||||||
|
|||||||
@@ -36,7 +36,8 @@
|
|||||||
<li><i class="icon-li icon-arrow-down text-error"></i> Link Down</li>
|
<li><i class="icon-li icon-arrow-down text-error"></i> Link Down</li>
|
||||||
<li><i class="icon-li icon-arrow-down text-success"></i> Port Free</li>
|
<li><i class="icon-li icon-arrow-down text-success"></i> Port Free</li>
|
||||||
<li><i class="icon-li icon-remove"></i> Admin Disabled</li>
|
<li><i class="icon-li icon-remove"></i> Admin Disabled</li>
|
||||||
<li><i class="icon-li icon-fullscreen text-info"></i> Blocking</li>
|
<li><i class="icon-li icon-exclamation-sign text-error"></i> Error Disabled</li>
|
||||||
|
<li><i class="icon-li icon-ban-circle text-info"></i> Blocking</li>
|
||||||
<li><i class="icon-li icon-link text-warning"></i> Manual Topology</li>
|
<li><i class="icon-li icon-link text-warning"></i> Manual Topology</li>
|
||||||
<li><i class="icon-li icon-link"></i> Neighbor Device</li>
|
<li><i class="icon-li icon-link"></i> Neighbor Device</li>
|
||||||
<li><i class="icon-li icon-unlink text-error"></i> Neighbor Inacessible</li>
|
<li><i class="icon-li icon-unlink text-error"></i> Neighbor Inacessible</li>
|
||||||
|
|||||||
Reference in New Issue
Block a user