Merge lp:~ltrager/maas/lp1636858_2.0 into lp:maas/2.0

Proposed by Lee Trager
Status: Merged
Approved by: Lee Trager
Approved revision: no longer in the source branch.
Merged at revision: 5202
Proposed branch: lp:~ltrager/maas/lp1636858_2.0
Merge into: lp:maas/2.0
Diff against target: 72 lines (+27/-6)
3 files modified
etc/maas/templates/commissioning-user-data/snippets/maas_enlist.sh (+1/-1)
src/maasserver/api/tests/test_machines.py (+18/-1)
src/maasserver/forms.py (+8/-4)
To merge this branch: bzr merge lp:~ltrager/maas/lp1636858_2.0
Reviewer Review Type Date Requested Status
Lee Trager (community) Approve
Review via email: mp+309413@code.launchpad.net

Commit message

Backport from 2.1.1 - If the power_parameters are the empty string set them to an empty dictionary, don't use json.loads

To post a comment you must log in.
Revision history for this message
MAAS Lander (maas-lander) wrote :

Voting does not meet specified criteria. Required: Approve >= 1, Disapprove == 0. Got: .

Revision history for this message
Lee Trager (ltrager) :
review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
=== modified file 'etc/maas/templates/commissioning-user-data/snippets/maas_enlist.sh'
--- etc/maas/templates/commissioning-user-data/snippets/maas_enlist.sh 2016-04-12 17:36:35 +0000
+++ etc/maas/templates/commissioning-user-data/snippets/maas_enlist.sh 2016-10-26 23:40:14 +0000
@@ -136,7 +136,7 @@
136 -n | --hostname hostname of the node to register136 -n | --hostname hostname of the node to register
137 -i | --interface interface address to register (obtains MAC address)137 -i | --interface interface address to register (obtains MAC address)
138 -a | --arch architecture of the node to register138 -a | --arch architecture of the node to register
139 -t | --power-type power type (ipmi, virsh, manual)139 -t | --power-type power type (ipmi, virsh, moonshot)
140 -p | --power-params power parameters (In JSON format, between single quotes)140 -p | --power-params power parameters (In JSON format, between single quotes)
141 e.g. --power-params '{"power_address":"192.168.1.10"}'141 e.g. --power-params '{"power_address":"192.168.1.10"}'
142 --subarch subarchitecture of the node to register142 --subarch subarchitecture of the node to register
143143
=== modified file 'src/maasserver/api/tests/test_machines.py'
--- src/maasserver/api/tests/test_machines.py 2016-10-05 19:01:28 +0000
+++ src/maasserver/api/tests/test_machines.py 2016-10-26 23:40:14 +0000
@@ -203,6 +203,23 @@
203 "Select a valid choice. %s is not one of the "203 "Select a valid choice. %s is not one of the "
204 "available choices." % power_type, validation_errors[0])204 "available choices." % power_type, validation_errors[0])
205205
206 def test_POST_new_handles_empty_str_power_parameters(self):
207 # Regression test for LP:1636858
208 response = self.client.post(
209 reverse('machines_handler'),
210 {
211 'architecture': make_usable_architecture(self),
212 'mac_addresses': ['aa:bb:cc:dd:ee:ff'],
213 'power_type': '',
214 'power_parameters': '',
215 })
216 self.assertEqual(http.client.OK, response.status_code)
217 system_id = json.loads(
218 response.content.decode(settings.DEFAULT_CHARSET))['system_id']
219 machine = Machine.objects.get(system_id=system_id)
220 self.assertEquals('', machine.power_type)
221 self.assertItemsEqual({}, machine.power_parameters)
222
206 def test_GET_lists_machines(self):223 def test_GET_lists_machines(self):
207 # The api allows for fetching the list of Machines.224 # The api allows for fetching the list of Machines.
208 machine1 = factory.make_Node()225 machine1 = factory.make_Node()
@@ -219,7 +236,7 @@
219236
220 def test_GET_machines_issues_constant_number_of_queries(self):237 def test_GET_machines_issues_constant_number_of_queries(self):
221 # XXX: GavinPanella 2014-10-03 bug=1377335238 # XXX: GavinPanella 2014-10-03 bug=1377335
222 self.skip("Unreliable; something is causing varying counts.")239 self.skipTest("Unreliable; something is causing varying counts.")
223240
224 for _ in range(10):241 for _ in range(10):
225 factory.make_Node_with_Interface_on_Subnet()242 factory.make_Node_with_Interface_on_Subnet()
226243
=== modified file 'src/maasserver/forms.py'
--- src/maasserver/forms.py 2016-10-24 18:41:13 +0000
+++ src/maasserver/forms.py 2016-10-26 23:40:14 +0000
@@ -253,10 +253,14 @@
253 'power_parameters', form.initial.get('power_parameters', {}))253 'power_parameters', form.initial.get('power_parameters', {}))
254254
255 if isinstance(power_parameters, str):255 if isinstance(power_parameters, str):
256 try:256 if power_parameters.strip() == '':
257 power_parameters = json.loads(power_parameters)257 power_parameters = {}
258 except json.JSONDecodeError:258 else:
259 raise ValidationError("Failed to parse JSON power_parameters")259 try:
260 power_parameters = json.loads(power_parameters)
261 except json.JSONDecodeError:
262 raise ValidationError(
263 "Failed to parse JSON power_parameters")
260264
261 # Integrate the machines existing power_parameters if unset by form.265 # Integrate the machines existing power_parameters if unset by form.
262 if machine:266 if machine:

Subscribers

People subscribed via source and target branches

to all changes: