Merge ~alexsander-souza/maas:lp2025468_fix_dhcp_helper into maas:master

Proposed by Alexsander de Souza
Status: Merged
Approved by: Alexsander de Souza
Approved revision: f81cb5dd42aa24786e1161bada6035e9bec9ef82
Merge reported by: MAAS Lander
Merged at revision: not available
Proposed branch: ~alexsander-souza/maas:lp2025468_fix_dhcp_helper
Merge into: maas:master
Diff against target: 85 lines (+16/-5)
4 files modified
src/maasserver/rpc/leases.py (+2/-0)
src/maasserver/rpc/tests/test_leases.py (+9/-2)
src/maastesting/factory.py (+4/-2)
src/provisioningserver/rackdservices/lease_socket_service.py (+1/-1)
Reviewer Review Type Date Requested Status
Alberto Donato (community) Approve
MAAS Lander Approve
Review via email: mp+449880@code.launchpad.net

Commit message

fix DHCP notification handler

normalise MAC addresses before searching the database

fixes LP#2025468

To post a comment you must log in.
Revision history for this message
MAAS Lander (maas-lander) wrote :

UNIT TESTS
-b lp2025468_fix_dhcp_helper lp:~alexsander-souza/maas/+git/maas into -b master lp:~maas-committers/maas

STATUS: SUCCESS
COMMIT: f81cb5dd42aa24786e1161bada6035e9bec9ef82

review: Approve
Revision history for this message
Alberto Donato (ack) wrote :

+1

review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1diff --git a/src/maasserver/rpc/leases.py b/src/maasserver/rpc/leases.py
2index b999fc1..2614fcb 100644
3--- a/src/maasserver/rpc/leases.py
4+++ b/src/maasserver/rpc/leases.py
5@@ -9,6 +9,7 @@ from datetime import datetime
6 from netaddr import IPAddress
7
8 from maasserver.enum import IPADDRESS_FAMILY, IPADDRESS_TYPE
9+from maasserver.fields import normalise_macaddress
10 from maasserver.models import (
11 DNSResource,
12 Interface,
13@@ -91,6 +92,7 @@ def update_lease(
14 "Family for the subnet does not match. Expected: %s" % ip_family
15 )
16
17+ mac = normalise_macaddress(mac)
18 created = datetime.fromtimestamp(timestamp)
19 log.msg(
20 "Lease update: %s for %s on %s at %s%s%s"
21diff --git a/src/maasserver/rpc/tests/test_leases.py b/src/maasserver/rpc/tests/test_leases.py
22index 03399bf..8361d96 100644
23--- a/src/maasserver/rpc/tests/test_leases.py
24+++ b/src/maasserver/rpc/tests/test_leases.py
25@@ -13,6 +13,7 @@ from netaddr import IPAddress
26 from testtools.matchers import MatchesStructure
27
28 from maasserver.enum import INTERFACE_TYPE, IPADDRESS_FAMILY, IPADDRESS_TYPE
29+from maasserver.fields import normalise_macaddress
30 from maasserver.models import DNSResource
31 from maasserver.models.interface import UnknownInterface
32 from maasserver.models.staticipaddress import StaticIPAddress
33@@ -258,12 +259,18 @@ class TestUpdateLease(MAASServerTestCase):
34 subnet = factory.make_ipv4_Subnet_with_IPRanges(
35 with_static_range=False, dhcp_on=True
36 )
37- node = factory.make_Node_with_Interface_on_Subnet(subnet=subnet)
38+ mac = factory.make_mac_address(padding=False)
39+ norm_mac = normalise_macaddress(mac)
40+ node = factory.make_Node_with_Interface_on_Subnet(
41+ subnet=subnet, address=norm_mac
42+ )
43 boot_interface = node.get_boot_interface()
44 dynamic_range = subnet.get_dynamic_ranges()[0]
45 ip = factory.pick_ip_in_IPRange(dynamic_range)
46 kwargs = self.make_kwargs(
47- action="commit", mac=boot_interface.mac_address, ip=ip
48+ action="commit",
49+ mac=mac,
50+ ip=ip,
51 )
52 update_lease(**kwargs)
53
54diff --git a/src/maastesting/factory.py b/src/maastesting/factory.py
55index 39e5d62..f808f6c 100644
56--- a/src/maastesting/factory.py
57+++ b/src/maastesting/factory.py
58@@ -509,10 +509,12 @@ class Factory:
59 network = self.make_ipv6_network()
60 return self.make_ip_range(network=network)
61
62- def make_mac_address(self, delimiter=":"):
63+ def make_mac_address(self, delimiter=":", padding=True):
64 assert isinstance(delimiter, str)
65 octets = islice(self.random_octets, 6)
66- return delimiter.join(format(octet, "02x") for octet in octets)
67+ return delimiter.join(
68+ format(octet, "02x" if padding else "x") for octet in octets
69+ )
70
71 def make_random_leases(self, num_leases=1):
72 """Create a dict of arbitrary ip-to-mac address mappings."""
73diff --git a/src/provisioningserver/rackdservices/lease_socket_service.py b/src/provisioningserver/rackdservices/lease_socket_service.py
74index 24c768b..ece8bb7 100644
75--- a/src/provisioningserver/rackdservices/lease_socket_service.py
76+++ b/src/provisioningserver/rackdservices/lease_socket_service.py
77@@ -118,7 +118,7 @@ class LeaseSocketService(Service, DatagramProtocol):
78 client = yield self.client_service.getClientNow()
79 break
80 except NoConnectionsAvailable:
81- yield pause(wait, self.clock)
82+ yield pause(wait, clock)
83 else:
84 maaslog.error(
85 "Can't send DHCP lease information, no RPC "

Subscribers

People subscribed via source and target branches