diff --git a/netbox/dcim/tables.py b/netbox/dcim/tables.py index c9a5ecdc9..626bc9e7a 100644 --- a/netbox/dcim/tables.py +++ b/netbox/dcim/tables.py @@ -368,10 +368,11 @@ class PowerOutletTemplateTable(BaseTable): class InterfaceTemplateTable(BaseTable): pk = ToggleColumn() + mgmt_only = tables.TemplateColumn("{% if value %}OOB Management{% endif %}") class Meta(BaseTable.Meta): model = InterfaceTemplate - fields = ('pk', 'name', 'form_factor') + fields = ('pk', 'name', 'mgmt_only', 'form_factor') empty_text = "None" show_header = False diff --git a/netbox/dcim/views.py b/netbox/dcim/views.py index e6b77cb59..c257129a7 100644 --- a/netbox/dcim/views.py +++ b/netbox/dcim/views.py @@ -573,15 +573,10 @@ class DeviceTypeView(View): poweroutlet_table = tables.PowerOutletTemplateTable( natsorted(PowerOutletTemplate.objects.filter(device_type=devicetype), key=attrgetter('name')) ) - mgmt_interface_table = tables.InterfaceTemplateTable( - list(InterfaceTemplate.objects.order_naturally(devicetype.interface_ordering).filter( - device_type=devicetype, mgmt_only=True - )) - ) interface_table = tables.InterfaceTemplateTable( - list(InterfaceTemplate.objects.order_naturally(devicetype.interface_ordering).filter( - device_type=devicetype, mgmt_only=False - )) + list(InterfaceTemplate.objects.order_naturally( + devicetype.interface_ordering + ).filter(device_type=devicetype)) ) devicebay_table = tables.DeviceBayTemplateTable( natsorted(DeviceBayTemplate.objects.filter(device_type=devicetype), key=attrgetter('name')) @@ -591,7 +586,6 @@ class DeviceTypeView(View): consoleserverport_table.base_columns['pk'].visible = True powerport_table.base_columns['pk'].visible = True poweroutlet_table.base_columns['pk'].visible = True - mgmt_interface_table.base_columns['pk'].visible = True interface_table.base_columns['pk'].visible = True devicebay_table.base_columns['pk'].visible = True @@ -601,7 +595,6 @@ class DeviceTypeView(View): 'consoleserverport_table': consoleserverport_table, 'powerport_table': powerport_table, 'poweroutlet_table': poweroutlet_table, - 'mgmt_interface_table': mgmt_interface_table, 'interface_table': interface_table, 'devicebay_table': devicebay_table, }) @@ -835,14 +828,10 @@ class DeviceView(View): power_outlets = natsorted( PowerOutlet.objects.filter(device=device).select_related('connected_port'), key=attrgetter('name') ) - interfaces = Interface.objects.order_naturally(device.device_type.interface_ordering).filter( - device=device, mgmt_only=False - ).select_related( - 'connected_as_a__interface_b__device', 'connected_as_b__interface_a__device', - 'circuit_termination__circuit' - ).prefetch_related('ip_addresses') - mgmt_interfaces = Interface.objects.order_naturally(device.device_type.interface_ordering).filter( - device=device, mgmt_only=True + interfaces = Interface.objects.order_naturally( + device.device_type.interface_ordering + ).filter( + device=device ).select_related( 'connected_as_a__interface_b__device', 'connected_as_b__interface_a__device', 'circuit_termination__circuit' @@ -873,7 +862,6 @@ class DeviceView(View): 'power_ports': power_ports, 'power_outlets': power_outlets, 'interfaces': interfaces, - 'mgmt_interfaces': mgmt_interfaces, 'device_bays': device_bays, 'services': services, 'secrets': secrets, diff --git a/netbox/templates/dcim/device.html b/netbox/templates/dcim/device.html index a6e5d1dbe..a4672f6d0 100644 --- a/netbox/templates/dcim/device.html +++ b/netbox/templates/dcim/device.html @@ -7,7 +7,7 @@ {% block content %} {% include 'dcim/inc/device_header.html' with active_tab='info' %}
-
+
Device @@ -214,23 +214,9 @@
- Critical Connections + Console / Power
- {% for iface in mgmt_interfaces %} - {% include 'dcim/inc/interface.html' with icon='wrench' %} - {% empty %} - {% if device.device_type.interface_templates.exists %} - - - - {% endif %} - {% endfor %} {% for cp in console_ports %} {% include 'dcim/inc/consoleport.html' %} {% empty %} @@ -262,11 +248,6 @@
- No management interfaces defined - {% if perms.dcim.add_interface %} - - {% endif %} -
{% if perms.dcim.add_interface or perms.dcim.add_consoleport or perms.dcim.add_powerport %}
-
+
{% if device_bays or device.device_type.is_parent_device %} {% if perms.dcim.delete_devicebay %}
diff --git a/netbox/templates/dcim/devicetype.html b/netbox/templates/dcim/devicetype.html index 365ba2057..aac7a0622 100644 --- a/netbox/templates/dcim/devicetype.html +++ b/netbox/templates/dcim/devicetype.html @@ -33,7 +33,7 @@

{{ devicetype.manufacturer }} {{ devicetype.model }}

-
+
Chassis @@ -163,21 +163,20 @@ {% endif %}
+
+
{% include 'dcim/inc/devicetype_component_table.html' with table=consoleport_table title='Console Ports' add_url='dcim:devicetype_add_consoleport' delete_url='dcim:devicetype_delete_consoleport' %} {% include 'dcim/inc/devicetype_component_table.html' with table=powerport_table title='Power Ports' add_url='dcim:devicetype_add_powerport' delete_url='dcim:devicetype_delete_powerport' %} - {% include 'dcim/inc/devicetype_component_table.html' with table=mgmt_interface_table title='Management Interfaces' add_url='dcim:devicetype_add_interface' add_url_extra='?mgmt_only=1' edit_url='dcim:devicetype_bulkedit_interface' delete_url='dcim:devicetype_delete_interface' %} -
-
- {% if devicetype.is_parent_device %} + {% if devicetype.is_parent_device or devicebay_table.rows %} {% include 'dcim/inc/devicetype_component_table.html' with table=devicebay_table title='Device Bays' add_url='dcim:devicetype_add_devicebay' delete_url='dcim:devicetype_delete_devicebay' %} {% endif %} - {% if devicetype.is_network_device %} + {% if devicetype.is_network_device or interface_table.rows %} {% include 'dcim/inc/devicetype_component_table.html' with table=interface_table title='Interfaces' add_url='dcim:devicetype_add_interface' edit_url='dcim:devicetype_bulkedit_interface' delete_url='dcim:devicetype_delete_interface' %} {% endif %} - {% if devicetype.is_console_server %} + {% if devicetype.is_console_server or consoleserverport_table.rows %} {% include 'dcim/inc/devicetype_component_table.html' with table=consoleserverport_table title='Console Server Ports' add_url='dcim:devicetype_add_consoleserverport' delete_url='dcim:devicetype_delete_consoleserverport' %} {% endif %} - {% if devicetype.is_pdu %} + {% if devicetype.is_pdu or poweroutlet_table.rows %} {% include 'dcim/inc/devicetype_component_table.html' with table=poweroutlet_table title='Power Outlets' add_url='dcim:devicetype_add_poweroutlet' delete_url='dcim:devicetype_delete_poweroutlet' %} {% endif %}
diff --git a/netbox/templates/dcim/inc/consoleport.html b/netbox/templates/dcim/inc/consoleport.html index 58f5fa7de..8216e291d 100644 --- a/netbox/templates/dcim/inc/consoleport.html +++ b/netbox/templates/dcim/inc/consoleport.html @@ -1,13 +1,7 @@ - {% if selectable and perms.dcim.change_consoleport or perms.dcim.delete_consoleport %} - - - - {% endif %} {{ cp.name }} - {% if cp.cs_port %}
{{ cp.cs_port.device }} @@ -20,7 +14,7 @@ Not connected {% endif %} - + {% if perms.dcim.change_consoleport %} {% if cp.cs_port %} {% if cp.connection_status %} diff --git a/netbox/templates/dcim/inc/interface.html b/netbox/templates/dcim/inc/interface.html index 86e480710..352574128 100644 --- a/netbox/templates/dcim/inc/interface.html +++ b/netbox/templates/dcim/inc/interface.html @@ -5,7 +5,8 @@ {% endif %} - {{ iface.name }} + + {{ iface.name }} {% if iface.lag %} {{ iface.lag.name }} {% endif %} diff --git a/netbox/templates/dcim/inc/powerport.html b/netbox/templates/dcim/inc/powerport.html index ce4ac6967..4665246c7 100644 --- a/netbox/templates/dcim/inc/powerport.html +++ b/netbox/templates/dcim/inc/powerport.html @@ -1,13 +1,7 @@ - {% if selectable and perms.dcim.change_powerport or perms.dcim.delete_powerport %} - - - - {% endif %} {{ pp.name }} - {% if pp.power_outlet %} {{ pp.power_outlet.device }} @@ -20,7 +14,7 @@ Not connected {% endif %} - + {% if perms.dcim.change_powerport %} {% if pp.power_outlet %} {% if pp.connection_status %}