Merge ~lloydwaltersj/maas:fix-last-delpoy-time into maas:master

Proposed by Jack Lloyd-Walters
Status: Rejected
Rejected by: Jack Lloyd-Walters
Proposed branch: ~lloydwaltersj/maas:fix-last-delpoy-time
Merge into: maas:master
Diff against target: 68 lines (+17/-15)
3 files modified
src/maasserver/models/bootresource.py (+6/-13)
src/maasserver/models/tests/test_node.py (+10/-0)
src/maasserver/websockets/handlers/bootresource.py (+1/-2)
Reviewer Review Type Date Requested Status
MAAS Maintainers Pending
Review via email: mp+446769@code.launchpad.net

Commit message

make last deployment work again

To post a comment you must log in.
95fd52c... by Jack Lloyd-Walters

remove broken assert

Unmerged commits

95fd52c... by Jack Lloyd-Walters

remove broken assert

e3a7835... by Jack Lloyd-Walters

use only first field of arch

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..9db0c9d 100644
3--- a/src/maasserver/models/bootresource.py
4+++ b/src/maasserver/models/bootresource.py
5@@ -671,22 +671,15 @@ class BootResource(CleanSave, TimestampedModel):
6 return resource_set
7 return None
8
9- def get_last_deploy(self) -> datetime:
10+ def get_last_deploy(self) -> datetime | None:
11 from maasserver.models.event import Event
12 from provisioningserver.events import EVENT_TYPES
13
14- deploy_msg = f"deployed {self.name}/{self.architecture}"
15- try:
16- return (
17- Event.objects.filter(
18- type__name=EVENT_TYPES.IMAGE_DEPLOYED,
19- description=deploy_msg,
20- )
21- .latest("created")
22- .created
23- )
24- except Event.DoesNotExist:
25- pass
26+ if events := Event.objects.filter(
27+ type__name=EVENT_TYPES.IMAGE_DEPLOYED,
28+ description__contains=f"{self.name}/{self.split_arch()[0]}",
29+ ).order_by("created"):
30+ return events.last().created
31
32 def split_arch(self):
33 return self.architecture.split("/")
34diff --git a/src/maasserver/models/tests/test_node.py b/src/maasserver/models/tests/test_node.py
35index d675b14..bf61139 100644
36--- a/src/maasserver/models/tests/test_node.py
37+++ b/src/maasserver/models/tests/test_node.py
38@@ -4844,6 +4844,16 @@ class TestNode(MAASServerTestCase):
39 {EVENT_TYPES.IMAGE_DEPLOYED, EVENT_TYPES.DEPLOYED},
40 )
41
42+ def test_end_deployment_emits_image_deploy_msg(self):
43+ self.disable_node_query()
44+ node = factory.make_Node(status=NODE_STATUS.DEPLOYING)
45+ start_time = datetime.now()
46+ node.end_deployment()
47+ [event] = Event.objects.filter(
48+ type__name=EVENT_TYPES.IMAGE_DEPLOYED,
49+ )
50+ assert event.created >= start_time
51+
52 def test_end_deployment_sets_first_last_sync_value(self):
53 self.disable_node_query()
54 node = factory.make_Node(
55diff --git a/src/maasserver/websockets/handlers/bootresource.py b/src/maasserver/websockets/handlers/bootresource.py
56index 66d45b9..773262a 100644
57--- a/src/maasserver/websockets/handlers/bootresource.py
58+++ b/src/maasserver/websockets/handlers/bootresource.py
59@@ -496,8 +496,7 @@ class BootResourceHandler(Handler):
60 """Return the most recent deploy time for all resources."""
61 last_deployed = None
62 for resource in resources:
63- this_deploy = resource.get_last_deploy()
64- if this_deploy is not None:
65+ if this_deploy := resource.get_last_deploy():
66 last_deployed = self.pick_latest_datetime(
67 last_deployed, this_deploy
68 )

Subscribers

People subscribed via source and target branches