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
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