Browse Source

Show connected circuit termination on interface view

Jeremy Stretch 7 years ago
parent
commit
cefec1be60
2 changed files with 92 additions and 91 deletions
  1. 1 1
      netbox/dcim/views.py
  2. 91 90
      netbox/templates/dcim/interface.html

+ 1 - 1
netbox/dcim/views.py

@@ -1286,8 +1286,8 @@ class InterfaceView(View):
 
         return render(request, 'dcim/interface.html', {
             'interface': interface,
-            # TODO: Also handle connected CircuitTerminations
             'connected_interface': interface._connected_interface,
+            'connected_circuittermination': interface._connected_circuittermination,
             'ipaddress_table': ipaddress_table,
             'vlan_table': vlan_table,
         })

+ 91 - 90
netbox/templates/dcim/interface.html

@@ -122,80 +122,102 @@
         {% if interface.is_connectable %}
             <div class="panel panel-default">
                 <div class="panel-heading">
-                    <strong>Connected Interface</strong>
+                    <strong>Connection</strong>
                 </div>
-                {% if connected_interface %}
+                {% if interface.cable %}
                     <table class="table table-hover panel-body attr-table">
+                        {% if connected_interface %}
+                            <tr>
+                                <td>Device</td>
+                                <td>
+                                    <a href="{{ connected_interface.parent.get_absolute_url }}">{{ connected_interface.device }}</a>
+                                </td>
+                            </tr>
+                            <tr>
+                                <td>Name</td>
+                                <td>
+                                    <a href="{{ connected_interface.get_absolute_url }}">{{ connected_interface.name }}</a>
+                                </td>
+                            </tr>
+                            <tr>
+                                <td>Type</td>
+                                <td>{{ connected_interface.get_form_factor_display }}</td>
+                            </tr>
+                            <tr>
+                                <td>Enabled</td>
+                                <td>
+                                    {% if connected_interface.enabled %}
+                                        <span class="text-success"><i class="fa fa-check"></i></span>
+                                    {% else %}
+                                        <span class="text-danger"><i class="fa fa-close"></i></span>
+                                    {% endif %}
+                                </td>
+                            </tr>
+                            <tr>
+                                <td>LAG</td>
+                                <td>
+                                    {% if connected_interface.lag%}
+                                        <a href="{{ connected_interface.lag.get_absolute_url }}">{{ connected_interface.lag }}</a>
+                                    {% else %}
+                                        <span class="text-muted">None</span>
+                                    {% endif %}
+                                </td>
+                            </tr>
+                            <tr>
+                                <td>Description</td>
+                                <td>
+                                    {% if connected_interface.description %}
+                                        <span>{{ connected_interface.description }}</span>
+                                    {% else %}
+                                        <span class="text-muted">N/A</span>
+                                    {% endif %}
+                                </td>
+                            </tr>
+                            <tr>
+                                <td>MTU</td>
+                                <td>
+                                    {% if connected_interface.mtu %}
+                                        <span>{{ connected_interface.mtu }}</span>
+                                    {% else %}
+                                        <span class="text-muted">N/A</span>
+                                    {% endif %}
+                                </td>
+                            </tr>
+                            <tr>
+                                <td>MAC Address</td>
+                                <td>
+                                    {% if connected_interface.mac_address %}
+                                        <span>{{ connected_interface.mac_address }}</span>
+                                    {% else %}
+                                        <span class="text-muted">N/A</span>
+                                    {% endif %}
+                                </td>
+                            </tr>
+                            <tr>
+                                <td>802.1Q Mode</td>
+                                <td>{{ connected_interface.get_mode_display }}</td>
+                            </tr>
+                        {% elif connected_circuittermination %}
+                            {% with ct=connected_circuittermination %}
+                                <tr>
+                                    <td>Circuit</td>
+                                    <td><a href="{{ ct.circuit.get_absolute_url }}">{{ ct.circuit }}</a></td>
+                                </tr>
+                                <tr>
+                                    <td>Side</td>
+                                    <td>{{ ct.term_side }}</td>
+                                </tr>
+                            {% endwith %}
+                        {% endif %}
                         <tr>
-                            <td>{% if connected_interface.device %}Device{% else %}Virtual Machine{% endif %}</td>
-                            <td>
-                                <a href="{{ connected_interface.parent.get_absolute_url }}">{{ connected_interface.parent }}</a>
-                            </td>
-                        </tr>
-                        <tr>
-                            <td>Name</td>
-                            <td>
-                                <a href="{{ connected_interface.get_absolute_url }}">{{ connected_interface.name }}</a>
-                            </td>
-                        </tr>
-                        <tr>
-                            <td>Type</td>
-                            <td>{{ connected_interface.get_form_factor_display }}</td>
-                        </tr>
-                        <tr>
-                            <td>Enabled</td>
-                            <td>
-                                {% if connected_interface.enabled %}
-                                    <span class="text-success"><i class="fa fa-check"></i></span>
-                                {% else %}
-                                    <span class="text-danger"><i class="fa fa-close"></i></span>
-                                {% endif %}
-                            </td>
-                        </tr>
-                        <tr>
-                            <td>LAG</td>
-                            <td>
-                                {% if connected_interface.lag%}
-                                    <a href="{{ connected_interface.lag.get_absolute_url }}">{{ connected_interface.lag }}</a>
-                                {% else %}
-                                    <span class="text-muted">None</span>
-                                {% endif %}
-                            </td>
-                        </tr>
-                        <tr>
-                            <td>Description</td>
-                            <td>
-                                {% if connected_interface.description %}
-                                    <span>{{ connected_interface.description }}</span>
-                                {% else %}
-                                    <span class="text-muted">N/A</span>
-                                {% endif %}
-                            </td>
-                        </tr>
-                        <tr>
-                            <td>MTU</td>
-                            <td>
-                                {% if connected_interface.mtu %}
-                                    <span>{{ connected_interface.mtu }}</span>
-                                {% else %}
-                                    <span class="text-muted">N/A</span>
-                                {% endif %}
-                            </td>
-                        </tr>
-                        <tr>
-                            <td>MAC Address</td>
+                            <td>Cable</td>
                             <td>
-                                {% if connected_interface.mac_address %}
-                                    <span>{{ connected_interface.mac_address }}</span>
-                                {% else %}
-                                    <span class="text-muted">N/A</span>
-                                {% endif %}
+                                <a href="{{ interface.cable.get_absolute_url }}">{{ interface.cable }}</a>
+                                <a href="{% url 'dcim:interface_trace' pk=interface.pk %}" class="btn btn-primary btn-xs" title="Trace">
+                                    <i class="fa fa-share-alt" aria-hidden="true"></i>
+                                </a>
                             </td>
                         </tr>
-                        <tr>
-                            <td>802.1Q Mode</td>
-                            <td>{{ connected_interface.get_mode_display }}</td>
-                        </tr>
                         <tr>
                             <td>Connection Status</td>
                             <td>
@@ -209,31 +231,10 @@
                     </table>
                 {% else %}
                     <div class="panel-body text-muted">
-                        No connected interface
+                        Not connected
                     </div>
                 {% endif %}
             </div>
-            <div class="panel panel-default">
-                <div class="panel-heading">
-                    <strong>Circuit Termination</strong>
-                </div>
-                <table class="table table-hover panel-body">
-                    {% if interface.circuit_termination %}
-                        <tr>
-                            <td>Circuit</td>
-                            <td><a href="{{ interface.circuit_termination.circuit.get_absolute_url }}">{{ interface.circuit_termination.circuit }}</a></td>
-                        </tr>
-                        <tr>
-                            <td>Side</td>
-                            <td>{{ interface.circuit_termination.term_side }}</td>
-                        </tr>
-                    {% else %}
-                        <tr>
-                            <td colspan="2" class="text-muted">None</td>
-                        </tr>
-                    {% endif %}
-                </table>
-            </div>
         {% endif %}
         {% if interface.is_lag %}
             <div class="panel panel-default">