From 96286b9d105450dc401f848101996b4135dc383b Mon Sep 17 00:00:00 2001 From: Zaid Abdulla Date: Tue, 23 Aug 2016 21:01:56 -0700 Subject: [PATCH] Implement API to delete faults --- lib/nbi.coffee | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/lib/nbi.coffee b/lib/nbi.coffee index d38f7e1..e190e7e 100644 --- a/lib/nbi.coffee +++ b/lib/nbi.coffee @@ -60,6 +60,7 @@ QUERY_REGEX = /^\/([a-zA-Z0-9_]+s)\/?$/ DELETE_DEVICE_REGEX = /^\/devices\/([a-zA-Z0-9\-\_\%]+)\/?$/ PROVISIONS_REGEX = /^\/provisions\/([a-zA-Z0-9\-\_\%]+)\/?$/ VIRTUAL_PARAMETERS_REGEX = /^\/virtual_parameters\/([a-zA-Z0-9\-\_\%]+)\/?$/ +FAULTS_REGEX = /^\/faults\/([a-zA-Z0-9\-\_\%\:]+)\/?$/ errorToString = (err) -> @@ -250,6 +251,25 @@ listener = (request, response) -> else response.writeHead 405, {'Allow': 'POST, DELETE'} response.end('405 Method Not Allowed') + else if FAULTS_REGEX.test(urlParts.pathname) + if request.method == 'DELETE' + faultId = querystring.unescape(FAULTS_REGEX.exec(urlParts.pathname)[1]) + deviceId = faultId.split(':', 1) + channel = faultId.slice(deviceId + 1) + db.redisClient.del("#{deviceId}_faults", (err) -> + db.faultsCollection.remove({_id : faultId}, (err) -> + throw err if err + if channel.startsWith('_task_') + return db.tasksCollection.remove({_id : mongodb.ObjectID(channel.slice(6))}, (err) -> + throw err if err + ) + response.writeHead(200) + response.end() + ) + ) + else + response.writeHead 405, {'Allow': 'DELETE'} + response.end('405 Method Not Allowed') else if DEVICE_TASKS_REGEX.test(urlParts.pathname) if request.method == 'POST' deviceId = querystring.unescape(DEVICE_TASKS_REGEX.exec(urlParts.pathname)[1]) @@ -453,6 +473,11 @@ listener = (request, response) -> timestamp: ((v) -> return new Date(v)) retries: Number }) + when 'faults' + q = query.sanitizeQueryTypes(q, { + timestamp: ((v) -> return new Date(v)) + retries: Number + }) if urlParts.query.projection? projection = {}