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

Proposed by Jacopo Rota
Status: Merged
Approved by: Jacopo Rota
Approved revision: f38086dc23297346337cb7b84aede2887f01014e
Merge reported by: MAAS Lander
Merged at revision: not available
Proposed branch: ~r00ta/maas:lp-2027625
Merge into: maas:master
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
Jack Lloyd-Walters Approve
Review via email: mp+446762@code.launchpad.net

Commit message

fix bootresource last_deployed property

Description of the change

This MP aims to fix https://bugs.launchpad.net/maas/+bug/2027625. See that bug report for the entire explanation of the problem and the fix.

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

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

STATUS: FAILED
LOG: http://maas-ci.internal:8080/job/maas-tester/3020/console
COMMIT: b9bc3e01ec39ef3c8e9238223b922691c0b7477e

review: Needs Fixing
Revision history for this message
Jacopo Rota (r00ta) wrote :

jenkins: !test

Revision history for this message
MAAS Lander (maas-lander) wrote :

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

STATUS: SUCCESS
COMMIT: b9bc3e01ec39ef3c8e9238223b922691c0b7477e

review: Approve
Revision history for this message
Jack Lloyd-Walters (lloydwaltersj) wrote :

+1, nice! optional suggestion inline to remove the `try ... except`.

review: Approve
~r00ta/maas:lp-2027625 updated
f38086d... by Jacopo Rota

refactoring

Revision history for this message
MAAS Lander (maas-lander) wrote :

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

STATUS: SUCCESS
COMMIT: f38086dc23297346337cb7b84aede2887f01014e

review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
diff --git a/src/maasserver/models/bootresource.py b/src/maasserver/models/bootresource.py
index 04fb36d..a843d5f 100644
--- a/src/maasserver/models/bootresource.py
+++ b/src/maasserver/models/bootresource.py
@@ -5,6 +5,7 @@
55
6from datetime import datetime6from datetime import datetime
7from operator import attrgetter7from operator import attrgetter
8from typing import Optional
89
9from django.core.exceptions import ValidationError10from django.core.exceptions import ValidationError
10from django.db.models import (11from django.db.models import (
@@ -671,22 +672,19 @@ class BootResource(CleanSave, TimestampedModel):
671 return resource_set672 return resource_set
672 return None673 return None
673674
674 def get_last_deploy(self) -> datetime:675 def get_last_deploy(self) -> Optional[datetime]:
675 from maasserver.models.event import Event676 from maasserver.models.event import Event
676 from provisioningserver.events import EVENT_TYPES677 from provisioningserver.events import EVENT_TYPES
677678
678 deploy_msg = f"deployed {self.name}/{self.architecture}"679 # Ignore subarch/platform/supported_platforms
679 try:680 arch, _ = self.split_arch()
680 return (681 deploy_msg_prefix = f"deployed {self.name}/{arch}/"
681 Event.objects.filter(682 if event := Event.objects.filter(
682 type__name=EVENT_TYPES.IMAGE_DEPLOYED,683 type__name=EVENT_TYPES.IMAGE_DEPLOYED,
683 description=deploy_msg,684 description__startswith=deploy_msg_prefix,
684 )685 ):
685 .latest("created")686 return event.latest("created").created
686 .created687 return None
687 )
688 except Event.DoesNotExist:
689 pass
690688
691 def split_arch(self):689 def split_arch(self):
692 return self.architecture.split("/")690 return self.architecture.split("/")
diff --git a/src/maasserver/websockets/handlers/tests/test_bootresource.py b/src/maasserver/websockets/handlers/tests/test_bootresource.py
index 01bda2c..a6c898f 100644
--- a/src/maasserver/websockets/handlers/tests/test_bootresource.py
+++ b/src/maasserver/websockets/handlers/tests/test_bootresource.py
@@ -373,11 +373,12 @@ class TestBootResourcePoll(MAASServerTestCase, PatchOSInfoMixin):
373 os_name, series = resource.name.split("/")373 os_name, series = resource.name.split("/")
374 # The polled datetime only has granularity of order seconds374 # The polled datetime only has granularity of order seconds
375 start_time = datetime.datetime.now().replace(microsecond=0)375 start_time = datetime.datetime.now().replace(microsecond=0)
376 architecture = BootResource.objects.get_usable_architectures()[0]
376 node = factory.make_Node(377 node = factory.make_Node(
377 status=NODE_STATUS.DEPLOYED,378 status=NODE_STATUS.DEPLOYED,
378 osystem=os_name,379 osystem=os_name,
379 distro_series=series,380 distro_series=series,
380 architecture=resource.architecture,381 architecture=architecture,
381 )382 )
382 node.end_deployment()383 node.end_deployment()
383 response = handler.poll({})384 response = handler.poll({})

Subscribers

People subscribed via source and target branches