Merge lp:~flacoste/maas/bug-981068 into lp:~maas-committers/maas/trunk

Proposed by Francis J. Lacoste
Status: Merged
Approved by: Andres Rodriguez
Approved revision: no longer in the source branch.
Merged at revision: 464
Proposed branch: lp:~flacoste/maas/bug-981068
Merge into: lp:~maas-committers/maas/trunk
Diff against target: 66 lines (+31/-0)
2 files modified
src/metadataserver/api.py (+3/-0)
src/metadataserver/tests/test_api.py (+28/-0)
To merge this branch: bzr merge lp:~flacoste/maas/bug-981068
Reviewer Review Type Date Requested Status
Francis J. Lacoste (community) Approve
Review via email: mp+101978@code.launchpad.net

Commit message

When commissioning completes, remove the owner allocation.

Description of the change

This fixes bug #981068 which prevents the MAAS from using the machine once they are commissioned.

In the metadataserver, it clears out the owner when it's getting the end of commissioning signal (OK or FAILED).

To post a comment you must log in.
Revision history for this message
Francis J. Lacoste (flacoste) wrote :

This is so simple, I'm self-reviewing this.

review: Approve
Revision history for this message
Francis J. Lacoste (flacoste) :
review: Approve
Revision history for this message
MAAS Lander (maas-lander) wrote :

No approved revision specified.

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'src/metadataserver/api.py'
2--- src/metadataserver/api.py 2012-04-11 06:59:20 +0000
3+++ src/metadataserver/api.py 2012-04-13 21:39:18 +0000
4@@ -176,6 +176,9 @@
5 return rc.ALL_OK
6
7 node.status = target_status
8+ # When moving to a terminal state, remove the allocation.
9+ if target_status is not None:
10+ node.owner = None
11 node.error = request.POST.get('error', '')
12 node.save()
13
14
15=== modified file 'src/metadataserver/tests/test_api.py'
16--- src/metadataserver/tests/test_api.py 2012-04-11 09:25:35 +0000
17+++ src/metadataserver/tests/test_api.py 2012-04-13 21:39:18 +0000
18@@ -313,6 +313,16 @@
19 self.assertEqual(
20 NODE_STATUS.COMMISSIONING, reload_object(node).status)
21
22+ def test_signaling_WORKING_keeps_owner(self):
23+ user = factory.make_user()
24+ node = factory.make_node(status=NODE_STATUS.COMMISSIONING)
25+ node.owner = user
26+ node.save()
27+ client = self.make_node_client(node=node)
28+ response = self.call_signal(client, status='WORKING')
29+ self.assertEqual(httplib.OK, response.status_code)
30+ self.assertEqual(user, reload_object(node).owner)
31+
32 def test_signaling_commissioning_success_makes_node_Ready(self):
33 node = factory.make_node(status=NODE_STATUS.COMMISSIONING)
34 client = self.make_node_client(node=node)
35@@ -343,6 +353,15 @@
36 self.assertEqual(httplib.OK, response.status_code)
37 self.assertEqual(NODE_STATUS.READY, reload_object(node).status)
38
39+ def test_signaling_commissioning_success_clears_owner(self):
40+ node = factory.make_node(status=NODE_STATUS.COMMISSIONING)
41+ node.owner = factory.make_user()
42+ node.save()
43+ client = self.make_node_client(node=node)
44+ response = self.call_signal(client, status='OK')
45+ self.assertEqual(httplib.OK, response.status_code)
46+ self.assertEqual(None, reload_object(node).owner)
47+
48 def test_signaling_commissioning_failure_makes_node_Failed_Tests(self):
49 node = factory.make_node(status=NODE_STATUS.COMMISSIONING)
50 client = self.make_node_client(node=node)
51@@ -366,6 +385,15 @@
52 self.assertEqual(httplib.OK, response.status_code)
53 self.assertEqual(error_text, reload_object(node).error)
54
55+ def test_signaling_commissioning_failure_clears_owner(self):
56+ node = factory.make_node(status=NODE_STATUS.COMMISSIONING)
57+ node.owner = factory.make_user()
58+ node.save()
59+ client = self.make_node_client(node=node)
60+ response = self.call_signal(client, status='FAILED')
61+ self.assertEqual(httplib.OK, response.status_code)
62+ self.assertEqual(None, reload_object(node).owner)
63+
64 def test_signaling_no_error_clears_existing_error(self):
65 node = factory.make_node(
66 status=NODE_STATUS.COMMISSIONING, error=factory.getRandomString())