Merge ~newell-jensen/maas:2.6-lp1834500-1468830 into maas:2.6

Proposed by Newell Jensen
Status: Merged
Approved by: Newell Jensen
Approved revision: abffa3b34e7bd5e3d9a3bcc1655caecdc2d46c79
Merge reported by: MAAS Lander
Merged at revision: not available
Proposed branch: ~newell-jensen/maas:2.6-lp1834500-1468830
Merge into: maas:2.6
Diff against target: 72 lines (+12/-5)
5 files modified
src/maasserver/models/node.py (+4/-1)
src/maasserver/models/tests/test_node.py (+6/-0)
src/maasserver/node_action.py (+0/-3)
src/maasserver/node_status.py (+1/-0)
src/maasserver/tests/test_node_action.py (+1/-1)
Reviewer Review Type Date Requested Status
Newell Jensen (community) Approve
Review via email: mp+371390@code.launchpad.net

Commit message

backport of f0331a265c1096ad7ee5cb1a24223b3c6b5813ff

LP: #1834500, #1468830 -- Mark previously deployed machines deployed when mark fixed. Allow marking a machine fixed if power is not on.

To post a comment you must log in.
Revision history for this message
Newell Jensen (newell-jensen) wrote :

Self approved backport.

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/node.py b/src/maasserver/models/node.py
2index 62d49e3..9b68918 100644
3--- a/src/maasserver/models/node.py
4+++ b/src/maasserver/models/node.py
5@@ -3289,7 +3289,10 @@ class Node(CleanSave, TimestampedModel):
6 raise NodeStateViolation(
7 "Can't mark a non-broken node as 'Ready'.")
8 maaslog.info("%s: Marking node fixed", self.hostname)
9- self.status = NODE_STATUS.READY
10+ if self.previous_status == NODE_STATUS.DEPLOYED:
11+ self.status = NODE_STATUS.DEPLOYED
12+ else:
13+ self.status = NODE_STATUS.READY
14 self.error_description = ''
15 self.osystem = ''
16 self.distro_series = ''
17diff --git a/src/maasserver/models/tests/test_node.py b/src/maasserver/models/tests/test_node.py
18index c71407e..593fd5d 100644
19--- a/src/maasserver/models/tests/test_node.py
20+++ b/src/maasserver/models/tests/test_node.py
21@@ -3715,6 +3715,12 @@ class TestNode(MAASServerTestCase):
22 node.mark_fixed(factory.make_User())
23 self.assertEqual(NODE_STATUS.READY, reload_object(node).status)
24
25+ def test_mark_fixed_changes_status_to_deployed_if_previous_status(self):
26+ node = factory.make_Node(
27+ status=NODE_STATUS.BROKEN, previous_status=NODE_STATUS.DEPLOYED)
28+ node.mark_fixed(factory.make_User())
29+ self.assertEqual(NODE_STATUS.DEPLOYED, reload_object(node).status)
30+
31 def test_mark_fixed_logs_user_request(self):
32 owner = factory.make_User()
33 node = factory.make_Node(status=NODE_STATUS.BROKEN, owner=owner)
34diff --git a/src/maasserver/node_action.py b/src/maasserver/node_action.py
35index 32239ec..a64cf57 100644
36--- a/src/maasserver/node_action.py
37+++ b/src/maasserver/node_action.py
38@@ -669,9 +669,6 @@ class MarkFixed(NodeAction):
39
40 def _execute(self):
41 """See `NodeAction.execute`."""
42- if self.node.power_state == POWER_STATE.ON:
43- raise NodeActionError(
44- "Unable to be mark fixed because the power is currently on.")
45 if not self.has_commissioning_data():
46 raise NodeActionError(
47 "Unable to be mark fixed because it has not been commissioned "
48diff --git a/src/maasserver/node_status.py b/src/maasserver/node_status.py
49index 615ab03..9c44a70 100644
50--- a/src/maasserver/node_status.py
51+++ b/src/maasserver/node_status.py
52@@ -176,6 +176,7 @@ NODE_TRANSITIONS = {
53 NODE_STATUS.RELEASING,
54 NODE_STATUS.ENTERING_RESCUE_MODE,
55 NODE_STATUS.TESTING,
56+ NODE_STATUS.DEPLOYED,
57 ],
58 NODE_STATUS.FAILED_RELEASING: [
59 NODE_STATUS.RELEASING,
60diff --git a/src/maasserver/tests/test_node_action.py b/src/maasserver/tests/test_node_action.py
61index 7b3e256..06f80f7 100644
62--- a/src/maasserver/tests/test_node_action.py
63+++ b/src/maasserver/tests/test_node_action.py
64@@ -1285,7 +1285,7 @@ class TestMarkFixedAction(MAASServerTestCase):
65
66 def test_changes_status(self):
67 node = factory.make_Node(
68- status=NODE_STATUS.BROKEN, power_state=POWER_STATE.OFF)
69+ status=NODE_STATUS.BROKEN, power_state=POWER_STATE.ON)
70 self.make_commissioning_data(node)
71 user = factory.make_admin()
72 request = factory.make_fake_request('/')

Subscribers

People subscribed via source and target branches