Merge lp:~blake-rouse/maas/fix-1482737 into lp:~maas-committers/maas/trunk

Proposed by Blake Rouse
Status: Merged
Approved by: Blake Rouse
Approved revision: no longer in the source branch.
Merged at revision: 4170
Proposed branch: lp:~blake-rouse/maas/fix-1482737
Merge into: lp:~maas-committers/maas/trunk
Diff against target: 45 lines (+18/-0)
2 files modified
src/maasserver/api/nodes.py (+3/-0)
src/maasserver/api/tests/test_nodes.py (+15/-0)
To merge this branch: bzr merge lp:~blake-rouse/maas/fix-1482737
Reviewer Review Type Date Requested Status
Ricardo Bánffy (community) Approve
Review via email: mp+267398@code.launchpad.net

Commit message

Convert the request.data to a mutable QueryDict in get_storage_layout_params in the acquire call.

To post a comment you must log in.
Revision history for this message
Ricardo Bánffy (rbanffy) wrote :

Typo in comment.

review: Approve
Revision history for this message
Ricardo Bánffy (rbanffy) wrote :

Sorry. Didn't save the inline note. "multable" on line 8

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'src/maasserver/api/nodes.py'
2--- src/maasserver/api/nodes.py 2015-08-05 15:06:29 +0000
3+++ src/maasserver/api/nodes.py 2015-08-07 19:26:13 +0000
4@@ -205,6 +205,9 @@
5 form = StorageLayoutForm(required=required, data=request.data)
6 if not form.is_valid():
7 raise MAASAPIValidationError(form.errors)
8+ # The request data needs to be mutable so replace the immutable QueryDict
9+ # with a mutable one.
10+ request.data = request.data.copy()
11 storage_layout = request.data.pop('storage_layout', None)
12 if not storage_layout:
13 storage_layout = None
14
15=== modified file 'src/maasserver/api/tests/test_nodes.py'
16--- src/maasserver/api/tests/test_nodes.py 2015-08-05 15:06:29 +0000
17+++ src/maasserver/api/tests/test_nodes.py 2015-08-07 19:26:13 +0000
18@@ -21,6 +21,7 @@
19 import crochet
20 from django.core.urlresolvers import reverse
21 from django.http import QueryDict
22+from django.test import RequestFactory
23 from maasserver import forms
24 from maasserver.api import nodes as nodes_module
25 from maasserver.api.utils import get_overridden_query_dict
26@@ -81,6 +82,20 @@
27 )
28
29
30+class TestGetStorageLayoutParams(MAASServerTestCase):
31+
32+ def test_sets_request_data_to_mutable(self):
33+ data = {
34+ 'op': 'acquire',
35+ 'storage_layout': 'flat',
36+ }
37+ request = RequestFactory().post(reverse('nodes_handler'), data)
38+ request.data = request.POST.copy()
39+ request.data._mutable = False
40+ nodes_module.get_storage_layout_params(request)
41+ self.assertTrue(request.data._mutable)
42+
43+
44 class NodeHostnameTest(MultipleUsersScenarios,
45 MAASServerTestCase):
46