From 759e4a6c4b03d36b2ff4f3976ce902a28b8423a3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rajmund=20Hru=C5=A1ka?= <rajmund.hruska@cesnet.cz> Date: Mon, 24 Aug 2020 09:52:05 +0200 Subject: [PATCH] Server: Improve error messages --- warden_server/test_warden_server.py | 3 ++- warden_server/warden_server.py | 11 +++++------ 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/warden_server/test_warden_server.py b/warden_server/test_warden_server.py index 2c6851c..13e0383 100644 --- a/warden_server/test_warden_server.py +++ b/warden_server/test_warden_server.py @@ -230,7 +230,8 @@ class Warden3ServerTest(unittest.TestCase): ("/sendEvents?secret=abc", '[{"Node": [{"Name"}]}]', "400 Deserialization error.", None), ("/sendEvents?secret=abc", '[{"Node": [{"Name": "test"}]}]', "422 Node does not correspond with saving client", None), ("/sendEvents?secret=abc", '[{"Node": [{"Name": "cz.cesnet.warden3test"}], "ID" : "120820201142"}]', "200 OK", ['{"saved": 1}']), - ("/sendEvents?secret=abc", '[{"Node": [{"Name": "cz.cesnet.warden3test"}], "ID" : "120820201142"}]', "400 IdeaID is not unique", None), + ("/sendEvents?secret=abc", '[{"Node": [{"Name": "cz.cesnet.warden3test"}], "ID" : "120820201142"}]', "409 IDEA event with this ID already exists", None), + ("/sendEvents?secret=abc", '[{"Node": [{"Name": "cz.cesnet.warden3test"}], "ID" : "120820201143"}]', "200 OK", None), ] for query, payload, expected_status, expected_response in tests: with self.subTest(query=query, payload=payload, expected_status=expected_status, expected_response=expected_response): diff --git a/warden_server/warden_server.py b/warden_server/warden_server.py index b06ab09..2ceacdb 100755 --- a/warden_server/warden_server.py +++ b/warden_server/warden_server.py @@ -767,9 +767,9 @@ class MySQL(ObjectBase): try: ideaid = event['ID'] except (KeyError, TypeError, ValueError): - exception = self.req.error(message="IDEA ID is null", error=400, exc=sys.exc_info(), env=self.req.env) + exception = self.req.error(message="Missing IDEA ID", error=400, exc=sys.exc_info(), env=self.req.env) exception.log(self.log) - errors.extend([{"error": 400, "message": "IDEA ID is not present"}]) + errors.extend([{"error": 400, "message": "Missing IDEA ID"}]) error_indx.append(event_id) continue lastid = db.query( @@ -791,11 +791,10 @@ class MySQL(ObjectBase): db.query("INSERT INTO event_tag_mapping (event_id,tag_id) VALUES (%s, %s)", (lastid, tag_id)) # In the future there may be other integrity errors, but at the moment there is just uniqueness of idea_id except my.IntegrityError as e: - exception = self.req.error(message="Database integrity error", error=400, exc=sys.exc_info(), env=self.req.env) + exception = self.req.error(message="IDEA event with this ID already exists", error=400, exc=sys.exc_info(), env=self.req.env) exception.log(self.log) - errors.extend([{"error": 400, "message": "IDEA ID is not unique"}]) + errors.extend([{"error": 409, "message": "IDEA event with this ID already exists"}]) error_indx.append(event_id) - pass return (errors, error_indx) except Exception as e: exception = self.req.error(message="DB error", error=500, exc=sys.exc_info(), env=self.req.env) @@ -1134,7 +1133,7 @@ class WardenHandler(ObjectBase): return [] def add_event_nums(self, ilist, events, errlist): - """Uniquify the list of errors and append the lists of indices and ids of events affected by the error.""" + """Uniquify the list of errors and append the lists of indices and add ids of events affected by the error.""" if not ilist: return errlist unique_errors = [dict(s) for s in set(frozenset(d.items()) for d in errlist)] -- GitLab