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
1diff --git a/src/maasserver/api/support.py b/src/maasserver/api/support.py
2index 24b8642..570bcb3 100644
3--- a/src/maasserver/api/support.py
4+++ b/src/maasserver/api/support.py
5@@ -16,7 +16,7 @@ from abc import ABCMeta, abstractproperty
6 from functools import wraps
7
8 from django.core.exceptions import PermissionDenied
9-from django.http import Http404
10+from django.http import Http404, HttpResponse
11 from django.shortcuts import get_object_or_404
12 from piston3.authentication import NoAuthentication
13 from piston3.emitters import Emitter
14@@ -61,9 +61,11 @@ class OperationsResource(Resource):
15 """
16 Override piston's error_handler to fix bug #1228205 and generally
17 do not hide exceptions.
18+ Also override Djangos default 404 handler to fix bug #1951229 and
19+ provide a more informative error message in the cli
20 """
21 if isinstance(e, Http404):
22- return rc.NOT_FOUND
23+ return HttpResponse(str(e), content_type="text/plain", status=404)
24 elif isinstance(e, HttpStatusCode):
25 return e.response
26 else:
27diff --git a/src/maasserver/api/tests/test_machine.py b/src/maasserver/api/tests/test_machine.py
28index 7c3d591..753750d 100644
29--- a/src/maasserver/api/tests/test_machine.py
30+++ b/src/maasserver/api/tests/test_machine.py
31@@ -275,7 +275,8 @@ class TestMachineAPI(APITestCase.ForUser):
32
33 self.assertEqual(http.client.NOT_FOUND, response.status_code)
34 self.assertEqual(
35- "Not Found", response.content.decode(settings.DEFAULT_CHARSET)
36+ "No Machine matches the given query.",
37+ response.content.decode(settings.DEFAULT_CHARSET),
38 )
39
40 def test_GET_returns_404_if_machine_name_contains_invld_characters(self):
41@@ -287,7 +288,8 @@ class TestMachineAPI(APITestCase.ForUser):
42
43 self.assertEqual(http.client.NOT_FOUND, response.status_code)
44 self.assertEqual(
45- "Not Found", response.content.decode(settings.DEFAULT_CHARSET)
46+ "No Machine matches the given query.",
47+ response.content.decode(settings.DEFAULT_CHARSET),
48 )
49
50 def test_GET_returns_owner_name_when_allocated_to_self(self):
51diff --git a/src/maasserver/api/tests/test_node.py b/src/maasserver/api/tests/test_node.py
52index f6df219..c37b11a 100644
53--- a/src/maasserver/api/tests/test_node.py
54+++ b/src/maasserver/api/tests/test_node.py
55@@ -101,7 +101,8 @@ class TestNodeAPI(APITestCase.ForUser):
56
57 self.assertEqual(http.client.NOT_FOUND, response.status_code)
58 self.assertEqual(
59- "Not Found", response.content.decode(settings.DEFAULT_CHARSET)
60+ "No Node matches the given query.",
61+ response.content.decode(settings.DEFAULT_CHARSET),
62 )
63
64 def test_GET_returns_404_if_node_name_contains_invalid_characters(self):
65@@ -113,7 +114,8 @@ class TestNodeAPI(APITestCase.ForUser):
66
67 self.assertEqual(http.client.NOT_FOUND, response.status_code)
68 self.assertEqual(
69- "Not Found", response.content.decode(settings.DEFAULT_CHARSET)
70+ "No Node matches the given query.",
71+ response.content.decode(settings.DEFAULT_CHARSET),
72 )
73
74 def test_resource_uri_points_back_at_machine(self):
75diff --git a/src/maasserver/api/tests/test_tag.py b/src/maasserver/api/tests/test_tag.py
76index 42d46d6..6795213 100644
77--- a/src/maasserver/api/tests/test_tag.py
78+++ b/src/maasserver/api/tests/test_tag.py
79@@ -598,6 +598,11 @@ class TestTagAPI(APITestCase.ForUser):
80 reverse("tag_handler", args=[name]), {"op": "update_nodes"}
81 )
82 self.assertEqual(http.client.NOT_FOUND, response.status_code)
83+ # check we have a verbose output
84+ self.assertEqual(
85+ "No Tag matches the given query.",
86+ response.content.decode(settings.DEFAULT_CHARSET),
87+ )
88
89 def test_POST_update_nodes_changes_associations(self):
90 tag = factory.make_Tag()

Subscribers

People subscribed via source and target branches