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
diff --git a/src/maasserver/rpc/leases.py b/src/maasserver/rpc/leases.py
index b999fc1..2614fcb 100644
--- a/src/maasserver/rpc/leases.py
+++ b/src/maasserver/rpc/leases.py
@@ -9,6 +9,7 @@ from datetime import datetime
9from netaddr import IPAddress9from netaddr import IPAddress
1010
11from maasserver.enum import IPADDRESS_FAMILY, IPADDRESS_TYPE11from maasserver.enum import IPADDRESS_FAMILY, IPADDRESS_TYPE
12from maasserver.fields import normalise_macaddress
12from maasserver.models import (13from maasserver.models import (
13 DNSResource,14 DNSResource,
14 Interface,15 Interface,
@@ -91,6 +92,7 @@ def update_lease(
91 "Family for the subnet does not match. Expected: %s" % ip_family92 "Family for the subnet does not match. Expected: %s" % ip_family
92 )93 )
9394
95 mac = normalise_macaddress(mac)
94 created = datetime.fromtimestamp(timestamp)96 created = datetime.fromtimestamp(timestamp)
95 log.msg(97 log.msg(
96 "Lease update: %s for %s on %s at %s%s%s"98 "Lease update: %s for %s on %s at %s%s%s"
diff --git a/src/maasserver/rpc/tests/test_leases.py b/src/maasserver/rpc/tests/test_leases.py
index 03399bf..8361d96 100644
--- a/src/maasserver/rpc/tests/test_leases.py
+++ b/src/maasserver/rpc/tests/test_leases.py
@@ -13,6 +13,7 @@ from netaddr import IPAddress
13from testtools.matchers import MatchesStructure13from testtools.matchers import MatchesStructure
1414
15from maasserver.enum import INTERFACE_TYPE, IPADDRESS_FAMILY, IPADDRESS_TYPE15from maasserver.enum import INTERFACE_TYPE, IPADDRESS_FAMILY, IPADDRESS_TYPE
16from maasserver.fields import normalise_macaddress
16from maasserver.models import DNSResource17from maasserver.models import DNSResource
17from maasserver.models.interface import UnknownInterface18from maasserver.models.interface import UnknownInterface
18from maasserver.models.staticipaddress import StaticIPAddress19from maasserver.models.staticipaddress import StaticIPAddress
@@ -258,12 +259,18 @@ class TestUpdateLease(MAASServerTestCase):
258 subnet = factory.make_ipv4_Subnet_with_IPRanges(259 subnet = factory.make_ipv4_Subnet_with_IPRanges(
259 with_static_range=False, dhcp_on=True260 with_static_range=False, dhcp_on=True
260 )261 )
261 node = factory.make_Node_with_Interface_on_Subnet(subnet=subnet)262 mac = factory.make_mac_address(padding=False)
263 norm_mac = normalise_macaddress(mac)
264 node = factory.make_Node_with_Interface_on_Subnet(
265 subnet=subnet, address=norm_mac
266 )
262 boot_interface = node.get_boot_interface()267 boot_interface = node.get_boot_interface()
263 dynamic_range = subnet.get_dynamic_ranges()[0]268 dynamic_range = subnet.get_dynamic_ranges()[0]
264 ip = factory.pick_ip_in_IPRange(dynamic_range)269 ip = factory.pick_ip_in_IPRange(dynamic_range)
265 kwargs = self.make_kwargs(270 kwargs = self.make_kwargs(
266 action="commit", mac=boot_interface.mac_address, ip=ip271 action="commit",
272 mac=mac,
273 ip=ip,
267 )274 )
268 update_lease(**kwargs)275 update_lease(**kwargs)
269276
diff --git a/src/maastesting/factory.py b/src/maastesting/factory.py
index 39e5d62..f808f6c 100644
--- a/src/maastesting/factory.py
+++ b/src/maastesting/factory.py
@@ -509,10 +509,12 @@ class Factory:
509 network = self.make_ipv6_network()509 network = self.make_ipv6_network()
510 return self.make_ip_range(network=network)510 return self.make_ip_range(network=network)
511511
512 def make_mac_address(self, delimiter=":"):512 def make_mac_address(self, delimiter=":", padding=True):
513 assert isinstance(delimiter, str)513 assert isinstance(delimiter, str)
514 octets = islice(self.random_octets, 6)514 octets = islice(self.random_octets, 6)
515 return delimiter.join(format(octet, "02x") for octet in octets)515 return delimiter.join(
516 format(octet, "02x" if padding else "x") for octet in octets
517 )
516518
517 def make_random_leases(self, num_leases=1):519 def make_random_leases(self, num_leases=1):
518 """Create a dict of arbitrary ip-to-mac address mappings."""520 """Create a dict of arbitrary ip-to-mac address mappings."""
diff --git a/src/provisioningserver/rackdservices/lease_socket_service.py b/src/provisioningserver/rackdservices/lease_socket_service.py
index 24c768b..ece8bb7 100644
--- a/src/provisioningserver/rackdservices/lease_socket_service.py
+++ b/src/provisioningserver/rackdservices/lease_socket_service.py
@@ -118,7 +118,7 @@ class LeaseSocketService(Service, DatagramProtocol):
118 client = yield self.client_service.getClientNow()118 client = yield self.client_service.getClientNow()
119 break119 break
120 except NoConnectionsAvailable:120 except NoConnectionsAvailable:
121 yield pause(wait, self.clock)121 yield pause(wait, clock)
122 else:122 else:
123 maaslog.error(123 maaslog.error(
124 "Can't send DHCP lease information, no RPC "124 "Can't send DHCP lease information, no RPC "

Subscribers

People subscribed via source and target branches