aboutsummaryrefslogtreecommitdiff
path: root/app/handlers/boot.py
diff options
context:
space:
mode:
authorMilo Casagrande <milo.casagrande@linaro.org>2014-11-18 17:22:47 +0100
committerMilo Casagrande <milo.casagrande@linaro.org>2014-11-18 17:22:47 +0100
commit8bf261419bafd1ea26073e2c52320e4a11455ea9 (patch)
treeeb0888732c4162bf41958af572b7ab27af77f19c /app/handlers/boot.py
parente953be3567146c12286b8df751290dd573caaad3 (diff)
boot: Fix boot handler for new mongodb object ID.
Change-Id: I49822be826a3d59ab2d69560c95c4d66308ada6a
Diffstat (limited to 'app/handlers/boot.py')
-rw-r--r--app/handlers/boot.py53
1 files changed, 32 insertions, 21 deletions
diff --git a/app/handlers/boot.py b/app/handlers/boot.py
index 99804fc..ff9129d 100644
--- a/app/handlers/boot.py
+++ b/app/handlers/boot.py
@@ -15,15 +15,17 @@
"""The RequestHandler for /boot URLs."""
-import handlers.base as handb
-import handlers.common as handc
-import handlers.response as handr
+import bson
+
+import handlers.base as hbase
+import handlers.common as hcommon
+import handlers.response as hresponse
import models
import taskqueue.tasks as taskq
-import utils.db as db
+import utils.db
-class BootHandler(handb.BaseHandler):
+class BootHandler(hbase.BaseHandler):
"""Handle the /boot URLs."""
def __init__(self, application, request, **kwargs):
@@ -35,10 +37,10 @@ class BootHandler(handb.BaseHandler):
@staticmethod
def _valid_keys(method):
- return handc.BOOT_VALID_KEYS.get(method, None)
+ return hcommon.BOOT_VALID_KEYS.get(method, None)
def _post(self, *args, **kwargs):
- response = handr.HandlerResponse(202)
+ response = hresponse.HandlerResponse(202)
if kwargs.get("reason", None):
response.reason = (
"Request accepted and being imported. WARNING: %s" %
@@ -59,16 +61,25 @@ class BootHandler(handb.BaseHandler):
if self.validate_req_token("DELETE"):
if kwargs and kwargs.get('id', None):
- doc_id = kwargs['id']
- if db.find_one(self.collection, doc_id):
- response = self._delete(doc_id)
- if response.status_code == 200:
- response.reason = "Resource '%s' deleted" % doc_id
- else:
- response = handr.HandlerResponse(404)
- response.reason = "Resource '%s' not found" % doc_id
+ try:
+ doc_id = kwargs['id']
+ obj_id = bson.objectid.ObjectId(doc_id)
+ if utils.db.find_one(self.collection, [obj_id]):
+ response = self._delete(obj_id)
+ if response.status_code == 200:
+ response.reason = "Resource '%s' deleted" % doc_id
+ else:
+ response = hresponse.HandlerResponse(404)
+ response.reason = "Resource '%s' not found" % doc_id
+ except bson.errors.InvalidId, ex:
+ self.log.exception(ex)
+ self.log.error(
+ "Wrong ID '%s' value passed as object ID", doc_id
+ )
+ response = hresponse.HandlerResponse(400)
+ response.reason = "Wrong ID value passed as object ID"
else:
- spec = handc.get_query_spec(
+ spec = hcommon.get_query_spec(
self.get_query_arguments, self._valid_keys("DELETE")
)
if spec:
@@ -78,22 +89,22 @@ class BootHandler(handb.BaseHandler):
"Resources identified with '%s' deleted" % spec
)
else:
- response = handr.HandlerResponse(400)
+ response = hresponse.HandlerResponse(400)
response.result = None
response.reason = (
"No valid data provided to execute a DELETE"
)
else:
- response = handr.HandlerResponse(403)
- response.reason = handc.NOT_VALID_TOKEN
+ response = hresponse.HandlerResponse(403)
+ response.reason = hcommon.NOT_VALID_TOKEN
return response
def _delete(self, spec_or_id):
- response = handr.HandlerResponse(200)
+ response = hresponse.HandlerResponse(200)
response.result = None
- response.status_code = db.delete(self.collection, spec_or_id)
+ response.status_code = utils.db.delete(self.collection, spec_or_id)
response.reason = self._get_status_message(response.status_code)
return response