Merge ~r00ta/maas:lp-2027625-3.4 into maas:3.4

Proposed by Jacopo Rota
Status: Merged
Approved by: Jacopo Rota
Approved revision: 63c3f618ee07f7eabf4aedbd3a5c7f8622d2f21a
Merge reported by: MAAS Lander
Merged at revision: not available
Proposed branch: ~r00ta/maas:lp-2027625-3.4
Merge into: maas:3.4
Diff against target: 63 lines (+13/-14)
2 files modified
src/maasserver/models/bootresource.py (+11/-13)
src/maasserver/websockets/handlers/tests/test_bootresource.py (+2/-1)
Reviewer Review Type Date Requested Status
MAAS Lander Approve
Jacopo Rota Approve
Review via email: mp+446824@code.launchpad.net

Commit message

backport of 0b90769fbe5f1c064e180557070b6e4a79a97055 - fix bootresource last_deployed property

Description of the change

backport of 0b90769fbe5f1c064e180557070b6e4a79a97055 - fix bootresource last_deployed property

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

UNIT TESTS
-b lp-2027625-3.4 lp:~r00ta/maas/+git/maas into -b 3.4 lp:~maas-committers/maas

STATUS: SUCCESS
COMMIT: 63c3f618ee07f7eabf4aedbd3a5c7f8622d2f21a

review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1diff --git a/src/maasserver/models/bootresource.py b/src/maasserver/models/bootresource.py
2index 04fb36d..a843d5f 100644
3--- a/src/maasserver/models/bootresource.py
4+++ b/src/maasserver/models/bootresource.py
5@@ -5,6 +5,7 @@
6
7 from datetime import datetime
8 from operator import attrgetter
9+from typing import Optional
10
11 from django.core.exceptions import ValidationError
12 from django.db.models import (
13@@ -671,22 +672,19 @@ class BootResource(CleanSave, TimestampedModel):
14 return resource_set
15 return None
16
17- def get_last_deploy(self) -> datetime:
18+ def get_last_deploy(self) -> Optional[datetime]:
19 from maasserver.models.event import Event
20 from provisioningserver.events import EVENT_TYPES
21
22- deploy_msg = f"deployed {self.name}/{self.architecture}"
23- try:
24- return (
25- Event.objects.filter(
26- type__name=EVENT_TYPES.IMAGE_DEPLOYED,
27- description=deploy_msg,
28- )
29- .latest("created")
30- .created
31- )
32- except Event.DoesNotExist:
33- pass
34+ # Ignore subarch/platform/supported_platforms
35+ arch, _ = self.split_arch()
36+ deploy_msg_prefix = f"deployed {self.name}/{arch}/"
37+ if event := Event.objects.filter(
38+ type__name=EVENT_TYPES.IMAGE_DEPLOYED,
39+ description__startswith=deploy_msg_prefix,
40+ ):
41+ return event.latest("created").created
42+ return None
43
44 def split_arch(self):
45 return self.architecture.split("/")
46diff --git a/src/maasserver/websockets/handlers/tests/test_bootresource.py b/src/maasserver/websockets/handlers/tests/test_bootresource.py
47index 01bda2c..a6c898f 100644
48--- a/src/maasserver/websockets/handlers/tests/test_bootresource.py
49+++ b/src/maasserver/websockets/handlers/tests/test_bootresource.py
50@@ -373,11 +373,12 @@ class TestBootResourcePoll(MAASServerTestCase, PatchOSInfoMixin):
51 os_name, series = resource.name.split("/")
52 # The polled datetime only has granularity of order seconds
53 start_time = datetime.datetime.now().replace(microsecond=0)
54+ architecture = BootResource.objects.get_usable_architectures()[0]
55 node = factory.make_Node(
56 status=NODE_STATUS.DEPLOYED,
57 osystem=os_name,
58 distro_series=series,
59- architecture=resource.architecture,
60+ architecture=architecture,
61 )
62 node.end_deployment()
63 response = handler.poll({})

Subscribers

People subscribed via source and target branches