Merge lp:~mpontillo/maas/netaddr-assumes-mac-oui-ascii--bug-1628761 into lp:~maas-committers/maas/trunk

Proposed by Mike Pontillo
Status: Merged
Approved by: Mike Pontillo
Approved revision: no longer in the source branch.
Merged at revision: 5437
Proposed branch: lp:~mpontillo/maas/netaddr-assumes-mac-oui-ascii--bug-1628761
Merge into: lp:~maas-committers/maas/trunk
Diff against target: 42 lines (+14/-0)
2 files modified
src/provisioningserver/utils/network.py (+5/-0)
src/provisioningserver/utils/tests/test_network.py (+9/-0)
To merge this branch: bzr merge lp:~mpontillo/maas/netaddr-assumes-mac-oui-ascii--bug-1628761
Reviewer Review Type Date Requested Status
Blake Rouse (community) Approve
Review via email: mp+307509@code.launchpad.net

Commit message

Add except clause for UnicodeError while getting EUI registration.

To post a comment you must log in.
Revision history for this message
Blake Rouse (blake-rouse) wrote :

Sucks this has to be performed. Looks good otherwise.

review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'src/provisioningserver/utils/network.py'
2--- src/provisioningserver/utils/network.py 2016-09-23 15:26:39 +0000
3+++ src/provisioningserver/utils/network.py 2016-10-04 04:38:18 +0000
4@@ -802,6 +802,11 @@
5 registration = eui.oui.registration()
6 # Note that `registration` is not a dictionary, so we can't use .get().
7 return registration['org']
8+ except UnicodeError:
9+ # See bug #1628761. Due to corrupt data in the OUI database, and/or
10+ # the fact that netaddr assumes all the data is ASCII, sometimes
11+ # netaddr will raise an exception during this process.
12+ return None
13 except NotRegisteredError:
14 # This could happen for locally-administered MACs.
15 return None
16
17=== modified file 'src/provisioningserver/utils/tests/test_network.py'
18--- src/provisioningserver/utils/tests/test_network.py 2016-08-20 13:58:58 +0000
19+++ src/provisioningserver/utils/tests/test_network.py 2016-10-04 04:38:18 +0000
20@@ -14,6 +14,7 @@
21 IPPROTO_TCP,
22 )
23 from unittest import mock
24+from unittest.mock import Mock
25
26 from maastesting.factory import factory
27 from maastesting.matchers import (
28@@ -207,6 +208,14 @@
29 organization = get_eui_organization(EUI("48:51:b7:00:00:00"))
30 self.assertThat(organization, Equals("Intel Corporate"))
31
32+ def test_get_eui_organization_returns_None_for_UnicodeError(self):
33+ mock_eui = Mock()
34+ mock_eui.oui = Mock()
35+ mock_eui.oui.registration = Mock()
36+ mock_eui.oui.registration.side_effect = UnicodeError
37+ organization = get_eui_organization(mock_eui)
38+ self.assertThat(organization, Is(None))
39+
40 def test_get_eui_organization_returns_none_for_invalid_mac(self):
41 organization = get_eui_organization(EUI("FF:FF:b7:00:00:00"))
42 self.assertThat(organization, Is(None))