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

Proposed by Newell Jensen
Status: Merged
Approved by: Newell Jensen
Approved revision: 4d2d85b7f9ffdae8122ebb84cbeb1d663919063c
Merge reported by: MAAS Lander
Merged at revision: not available
Proposed branch: ~newell-jensen/maas:lp1834500-1468830
Merge into: maas:master
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
Lee Trager (community) Approve
Alberto Donato (community) Approve
Review via email: mp+369426@code.launchpad.net

Commit message

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
Alberto Donato (ack) wrote :

lgtm, +1

review: Approve
Revision history for this message
Lee Trager (ltrager) 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/maasserver/models/node.py b/src/maasserver/models/node.py
2index 2a2a53b..fdafba9 100644
3--- a/src/maasserver/models/node.py
4+++ b/src/maasserver/models/node.py
5@@ -3291,7 +3291,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 730d8b2..02bc99b 100644
36--- a/src/maasserver/node_action.py
37+++ b/src/maasserver/node_action.py
38@@ -670,9 +670,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 bb09d2c..eeec31a 100644
62--- a/src/maasserver/tests/test_node_action.py
63+++ b/src/maasserver/tests/test_node_action.py
64@@ -1301,7 +1301,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