diff --git a/docs/release-notes/version-2.7.md b/docs/release-notes/version-2.7.md index ed9fdd28d..52c9d98f1 100644 --- a/docs/release-notes/version-2.7.md +++ b/docs/release-notes/version-2.7.md @@ -10,6 +10,10 @@ * [#3721](https://github.com/netbox-community/netbox/issues/3721) - Allow Unicode characters in tag slugs * [#3951](https://github.com/netbox-community/netbox/issues/3951) - Fix exception in webhook worker due to missing constant * [#3953](https://github.com/netbox-community/netbox/issues/3953) - Fix validation error when creating child devices +* [#3960](https://github.com/netbox-community/netbox/issues/3960) - Fix legacy device status choice +* [#3962](https://github.com/netbox-community/netbox/issues/3962) - Fix display of unnamed devices in rack elevations +* [#3963](https://github.com/netbox-community/netbox/issues/3963) - Restore tooltip for devices in rack elevations +* [#3967](https://github.com/netbox-community/netbox/issues/3967) - Resolve migration of "other" interface type --- diff --git a/mkdocs.yml b/mkdocs.yml index 686c04a1d..5e2179eb3 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -12,6 +12,7 @@ pages: - 4. LDAP (Optional): 'installation/4-ldap.md' - Upgrading NetBox: 'installation/upgrading.md' - Migrating to Python3: 'installation/migrating-to-python3.md' + - Migrating to systemd: 'installation/migrating-to-systemd.md' - Configuration: - Configuring NetBox: 'configuration/index.md' - Required Settings: 'configuration/required-settings.md' diff --git a/netbox/dcim/choices.py b/netbox/dcim/choices.py index 34bd8101b..6ceefa878 100644 --- a/netbox/dcim/choices.py +++ b/netbox/dcim/choices.py @@ -802,6 +802,7 @@ class InterfaceTypeChoices(ChoiceSet): TYPE_SUMMITSTACK128: 5310, TYPE_SUMMITSTACK256: 5320, TYPE_SUMMITSTACK512: 5330, + TYPE_OTHER: 32767, } diff --git a/netbox/dcim/migrations/0091_interface_type_other.py b/netbox/dcim/migrations/0091_interface_type_other.py new file mode 100644 index 000000000..1ea24885f --- /dev/null +++ b/netbox/dcim/migrations/0091_interface_type_other.py @@ -0,0 +1,20 @@ +from django.db import migrations + + +def interface_type_to_slug(apps, schema_editor): + Interface = apps.get_model('dcim', 'Interface') + Interface.objects.filter(type=32767).update(type='other') + + +class Migration(migrations.Migration): + + dependencies = [ + ('dcim', '0090_cable_termination_models'), + ] + + operations = [ + # Missed type "other" in the initial migration (see #3967) + migrations.RunPython( + code=interface_type_to_slug + ), + ] diff --git a/netbox/dcim/models/__init__.py b/netbox/dcim/models/__init__.py index 8c969c7fe..dc1369852 100644 --- a/netbox/dcim/models/__init__.py +++ b/netbox/dcim/models/__init__.py @@ -395,14 +395,23 @@ class RackElevationHelperMixin: fill='black' ) ) + link.set_desc('{} — {} ({}U) {} {}'.format( + device.device_role, device.device_type.display_name, + device.device_type.u_height, device.asset_tag or '', device.serial or '' + )) link.add(drawing.rect(start, end, style='fill: #{}'.format(color), class_='slot')) hex_color = '#{}'.format(foreground_color(color)) - link.add(drawing.text(device.name, insert=text, fill=hex_color)) + link.add(drawing.text(str(device), insert=text, fill=hex_color)) @staticmethod def _draw_device_rear(drawing, device, start, end, text): - drawing.add(drawing.rect(start, end, class_="blocked")) - drawing.add(drawing.text(device.name, insert=text)) + rect = drawing.rect(start, end, class_="blocked") + rect.set_desc('{} — {} ({}U) {} {}'.format( + device.device_role, device.device_type.display_name, + device.device_type.u_height, device.asset_tag or '', device.serial or '' + )) + drawing.add(rect) + drawing.add(drawing.text(str(device), insert=text)) @staticmethod def _draw_empty(drawing, rack, start, end, text, id_, face_id, class_): diff --git a/netbox/templates/dcim/device.html b/netbox/templates/dcim/device.html index 883cefd32..fa37f1ac5 100644 --- a/netbox/templates/dcim/device.html +++ b/netbox/templates/dcim/device.html @@ -84,7 +84,7 @@ {% if perms.dcim.napalm_read %} - {% if device.status != 1 %} + {% if device.status != 'active' %} {% include 'dcim/inc/device_napalm_tabs.html' with disabled_message='Device must be in active status' %} {% elif not device.platform %} {% include 'dcim/inc/device_napalm_tabs.html' with disabled_message='No platform assigned to this device' %}