Merge ~lloydwaltersj/maas:uninformative-cli-error into maas:master

Proposed by Jack Lloyd-Walters
Status: Merged
Approved by: Jack Lloyd-Walters
Approved revision: 89779d3f3f20157c894483f728197a23034c7433
Merge reported by: MAAS Lander
Merged at revision: not available
Proposed branch: ~lloydwaltersj/maas:uninformative-cli-error
Merge into: maas:master
Diff against target: 90 lines (+17/-6)
4 files modified
src/maasserver/api/support.py (+4/-2)
src/maasserver/api/tests/test_machine.py (+4/-2)
src/maasserver/api/tests/test_node.py (+4/-2)
src/maasserver/api/tests/test_tag.py (+5/-0)
Reviewer Review Type Date Requested Status
Anton Troyanov Approve
MAAS Lander Approve
Review via email: mp+427075@code.launchpad.net

Commit message

add more informative CLI messages

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

UNIT TESTS
-b uninformative-cli-error lp:~lloydwaltersj/maas/+git/maas into -b master lp:~maas-committers/maas

STATUS: FAILED
LOG: http://maas-ci.internal:8080/job/maas-tester/115/consoleText
COMMIT: 5b9e7e3da97f065770803c97a03e9b971d6c34af

review: Needs Fixing
Revision history for this message
MAAS Lander (maas-lander) wrote :

UNIT TESTS
-b uninformative-cli-error lp:~lloydwaltersj/maas/+git/maas into -b master lp:~maas-committers/maas

STATUS: SUCCESS
COMMIT: 89779d3f3f20157c894483f728197a23034c7433

review: Approve
Revision history for this message
Anton Troyanov (troyanov) :
review: Approve
Revision history for this message
MAAS Lander (maas-lander) wrote :

UNABLE TO START LANDING

STATUS: MISSING COMMIT MESSAGE

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
diff --git a/src/maasserver/api/support.py b/src/maasserver/api/support.py
index 24b8642..570bcb3 100644
--- a/src/maasserver/api/support.py
+++ b/src/maasserver/api/support.py
@@ -16,7 +16,7 @@ from abc import ABCMeta, abstractproperty
16from functools import wraps16from functools import wraps
1717
18from django.core.exceptions import PermissionDenied18from django.core.exceptions import PermissionDenied
19from django.http import Http40419from django.http import Http404, HttpResponse
20from django.shortcuts import get_object_or_40420from django.shortcuts import get_object_or_404
21from piston3.authentication import NoAuthentication21from piston3.authentication import NoAuthentication
22from piston3.emitters import Emitter22from piston3.emitters import Emitter
@@ -61,9 +61,11 @@ class OperationsResource(Resource):
61 """61 """
62 Override piston's error_handler to fix bug #1228205 and generally62 Override piston's error_handler to fix bug #1228205 and generally
63 do not hide exceptions.63 do not hide exceptions.
64 Also override Djangos default 404 handler to fix bug #1951229 and
65 provide a more informative error message in the cli
64 """66 """
65 if isinstance(e, Http404):67 if isinstance(e, Http404):
66 return rc.NOT_FOUND68 return HttpResponse(str(e), content_type="text/plain", status=404)
67 elif isinstance(e, HttpStatusCode):69 elif isinstance(e, HttpStatusCode):
68 return e.response70 return e.response
69 else:71 else:
diff --git a/src/maasserver/api/tests/test_machine.py b/src/maasserver/api/tests/test_machine.py
index 7c3d591..753750d 100644
--- a/src/maasserver/api/tests/test_machine.py
+++ b/src/maasserver/api/tests/test_machine.py
@@ -275,7 +275,8 @@ class TestMachineAPI(APITestCase.ForUser):
275275
276 self.assertEqual(http.client.NOT_FOUND, response.status_code)276 self.assertEqual(http.client.NOT_FOUND, response.status_code)
277 self.assertEqual(277 self.assertEqual(
278 "Not Found", response.content.decode(settings.DEFAULT_CHARSET)278 "No Machine matches the given query.",
279 response.content.decode(settings.DEFAULT_CHARSET),
279 )280 )
280281
281 def test_GET_returns_404_if_machine_name_contains_invld_characters(self):282 def test_GET_returns_404_if_machine_name_contains_invld_characters(self):
@@ -287,7 +288,8 @@ class TestMachineAPI(APITestCase.ForUser):
287288
288 self.assertEqual(http.client.NOT_FOUND, response.status_code)289 self.assertEqual(http.client.NOT_FOUND, response.status_code)
289 self.assertEqual(290 self.assertEqual(
290 "Not Found", response.content.decode(settings.DEFAULT_CHARSET)291 "No Machine matches the given query.",
292 response.content.decode(settings.DEFAULT_CHARSET),
291 )293 )
292294
293 def test_GET_returns_owner_name_when_allocated_to_self(self):295 def test_GET_returns_owner_name_when_allocated_to_self(self):
diff --git a/src/maasserver/api/tests/test_node.py b/src/maasserver/api/tests/test_node.py
index f6df219..c37b11a 100644
--- a/src/maasserver/api/tests/test_node.py
+++ b/src/maasserver/api/tests/test_node.py
@@ -101,7 +101,8 @@ class TestNodeAPI(APITestCase.ForUser):
101101
102 self.assertEqual(http.client.NOT_FOUND, response.status_code)102 self.assertEqual(http.client.NOT_FOUND, response.status_code)
103 self.assertEqual(103 self.assertEqual(
104 "Not Found", response.content.decode(settings.DEFAULT_CHARSET)104 "No Node matches the given query.",
105 response.content.decode(settings.DEFAULT_CHARSET),
105 )106 )
106107
107 def test_GET_returns_404_if_node_name_contains_invalid_characters(self):108 def test_GET_returns_404_if_node_name_contains_invalid_characters(self):
@@ -113,7 +114,8 @@ class TestNodeAPI(APITestCase.ForUser):
113114
114 self.assertEqual(http.client.NOT_FOUND, response.status_code)115 self.assertEqual(http.client.NOT_FOUND, response.status_code)
115 self.assertEqual(116 self.assertEqual(
116 "Not Found", response.content.decode(settings.DEFAULT_CHARSET)117 "No Node matches the given query.",
118 response.content.decode(settings.DEFAULT_CHARSET),
117 )119 )
118120
119 def test_resource_uri_points_back_at_machine(self):121 def test_resource_uri_points_back_at_machine(self):
diff --git a/src/maasserver/api/tests/test_tag.py b/src/maasserver/api/tests/test_tag.py
index 42d46d6..6795213 100644
--- a/src/maasserver/api/tests/test_tag.py
+++ b/src/maasserver/api/tests/test_tag.py
@@ -598,6 +598,11 @@ class TestTagAPI(APITestCase.ForUser):
598 reverse("tag_handler", args=[name]), {"op": "update_nodes"}598 reverse("tag_handler", args=[name]), {"op": "update_nodes"}
599 )599 )
600 self.assertEqual(http.client.NOT_FOUND, response.status_code)600 self.assertEqual(http.client.NOT_FOUND, response.status_code)
601 # check we have a verbose output
602 self.assertEqual(
603 "No Tag matches the given query.",
604 response.content.decode(settings.DEFAULT_CHARSET),
605 )
601606
602 def test_POST_update_nodes_changes_associations(self):607 def test_POST_update_nodes_changes_associations(self):
603 tag = factory.make_Tag()608 tag = factory.make_Tag()

Subscribers

People subscribed via source and target branches