diff --git a/changelog.d/3262.fixed.md b/changelog.d/3262.fixed.md new file mode 100644 index 0000000000..22fb9e048a --- /dev/null +++ b/changelog.d/3262.fixed.md @@ -0,0 +1 @@ +Ignore case of sysname in IP device info diff --git a/python/nav/web/ipdevinfo/views.py b/python/nav/web/ipdevinfo/views.py index b525d60f83..8e6ffccbe8 100644 --- a/python/nav/web/ipdevinfo/views.py +++ b/python/nav/web/ipdevinfo/views.py @@ -163,9 +163,9 @@ def get_netbox(name=None, addr=None): if name: try: if is_valid_ip(name, strict=True): - netbox = netboxes.get(Q(sysname=name) | Q(ip=name)) + netbox = netboxes.get(Q(sysname__iexact=name) | Q(ip=name)) else: - netbox = netboxes.get(sysname=name) + netbox = netboxes.get(sysname__iexact=name) except Netbox.DoesNotExist: pass elif addr: @@ -178,7 +178,7 @@ def get_netbox(name=None, addr=None): for address in host_information['addresses']: if 'name' in address: try: - netbox = netboxes.get(sysname=address['name']) + netbox = netboxes.get(sysname__iexact=address['name']) break # Exit loop at first match except Netbox.DoesNotExist: pass diff --git a/tests/integration/web/ipdevinfo_test.py b/tests/integration/web/ipdevinfo_test.py index 5046529d38..b929608809 100644 --- a/tests/integration/web/ipdevinfo_test.py +++ b/tests/integration/web/ipdevinfo_test.py @@ -15,6 +15,12 @@ def test_device_details_should_include_sysname(client, netbox): assert netbox.sysname in smart_str(response.content) +def test_device_details_should_match_sysname_case_insensitively(client, netbox): + url = reverse('ipdevinfo-details-by-name', args=(netbox.sysname.upper(),)) + response = client.get(url) + assert netbox.sysname in smart_str(response.content) + + def test_port_search_should_match_case_insensitively(client, netbox): ifc = netbox.interfaces.all()[0] url = reverse(