Merge ~ltrager/maas:lp1851620 into maas:master

Proposed by Lee Trager
Status: Merged
Approved by: Lee Trager
Approved revision: 7c2400edc6929ae2f56cc2df893a40723f88b832
Merge reported by: MAAS Lander
Merged at revision: not available
Proposed branch: ~ltrager/maas:lp1851620
Merge into: maas:master
Diff against target: 49 lines (+19/-1)
2 files modified
src/metadataserver/api.py (+13/-1)
src/metadataserver/tests/test_api.py (+6/-0)
Reviewer Review Type Date Requested Status
Alberto Donato (community) Approve
Review via email: mp+375256@code.launchpad.net

Commit message

LP: #1851620 - Ensure all pending and running tests are aborted on failure.

To post a comment you must log in.
~ltrager/maas:lp1851620 updated
7c2400e... by Lee Trager

make format

Revision history for this message
Alberto Donato (ack) wrote :

lgtm

review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1diff --git a/src/metadataserver/api.py b/src/metadataserver/api.py
2index b359714..be64159 100644
3--- a/src/metadataserver/api.py
4+++ b/src/metadataserver/api.py
5@@ -60,7 +60,10 @@ from maasserver.models import (
6 from maasserver.models.event import Event
7 from maasserver.models.tag import Tag
8 from maasserver.models.timestampedmodel import now
9-from maasserver.node_status import NODE_TESTING_RESET_READY_TRANSITIONS
10+from maasserver.node_status import (
11+ FAILED_STATUSES,
12+ NODE_TESTING_RESET_READY_TRANSITIONS,
13+)
14 from maasserver.populate_tags import populate_tags_for_single_node
15 from maasserver.preseed import (
16 get_curtin_userdata,
17@@ -815,6 +818,15 @@ class VersionIndexHandler(MetadataViewHandler):
18 if target_status in (None, node.status):
19 # No status change. Nothing to be done.
20 return rc.ALL_OK
21+ elif target_status in FAILED_STATUSES:
22+ ScriptResult.objects.filter(
23+ script_set__in=[
24+ node.current_commissioning_script_set,
25+ node.current_testing_script_set,
26+ node.current_installation_script_set,
27+ ],
28+ status__in=SCRIPT_STATUS_RUNNING_OR_PENDING,
29+ ).update(status=SCRIPT_STATUS.ABORTED, updated=now())
30
31 # Only machines can change their status. This is to allow controllers
32 # to send refresh data without having their status changed to READY.
33diff --git a/src/metadataserver/tests/test_api.py b/src/metadataserver/tests/test_api.py
34index 5846999..ce0794a 100644
35--- a/src/metadataserver/tests/test_api.py
36+++ b/src/metadataserver/tests/test_api.py
37@@ -2931,6 +2931,12 @@ class TestTestingAPI(MAASServerTestCase):
38 NODE_STATUS.FAILED_TESTING, reload_object(node).status
39 )
40 self.assertEqual(event.type.name, EVENT_TYPES.FAILED_TESTING)
41+ self.assertEquals(
42+ SCRIPT_STATUS.ABORTED, node.current_commissioning_script_set.status
43+ )
44+ self.assertEquals(
45+ SCRIPT_STATUS.ABORTED, node.current_testing_script_set.status
46+ )
47
48 def test_signaling_testing_testing_transitions_to_testing(self):
49 node = factory.make_Node(

Subscribers

People subscribed via source and target branches