[Kimchi-devel] [PATCH] [Wok 3/4] Implement User Request Logger API

Lucio Correia luciojhc at linux.vnet.ibm.com
Fri Feb 26 18:56:29 UTC 2016


Signed-off-by: Lucio Correia <luciojhc at linux.vnet.ibm.com>
---
 docs/API/logs.md        | 27 +++++++++++++++++++++++++++
 src/wok/control/logs.py | 43 +++++++++++++++++++++++++++++++++++++++++++
 src/wok/model/logs.py   | 31 +++++++++++++++++++++++++++++++
 3 files changed, 101 insertions(+)
 create mode 100644 docs/API/logs.md
 create mode 100644 src/wok/control/logs.py
 create mode 100644 src/wok/model/logs.py

diff --git a/docs/API/logs.md b/docs/API/logs.md
new file mode 100644
index 0000000..f808e1a
--- /dev/null
+++ b/docs/API/logs.md
@@ -0,0 +1,27 @@
+## REST API Specification for Logs
+
+### Collection: Logs
+
+**URI:** /logs
+
+**Methods:**
+
+* **GET**: Retrieve a list of entries from User Request Log
+    * Parameters:
+        * app: Filter entries by application that received the request.
+               Use "wok" or any plugin installed, like "kimchi".
+        * req: Filter entries by type of request: "DELETE", "POST", "PUT".
+               "GET" requests are not logged.
+        * user: Filter entries by user that performed the request.
+        * date: Filter entries by date of record in the format "YYYY-MM-DD"
+        * download: Generate text file for download of search results.
+
+#### Examples
+GET /logs?download=True
+{'records': [{entry-record1}, {entry-record2}, {entry-record3}, ...],
+'uri': "/data/logs/tmpbnOzP2.txt"}
+
+GET /logs?user=dev&app=ginger
+{'records': [{entry-record1}, {entry-record2}, {entry-record3}, ...],
+'uri': None}
+
diff --git a/src/wok/control/logs.py b/src/wok/control/logs.py
new file mode 100644
index 0000000..0eb04d7
--- /dev/null
+++ b/src/wok/control/logs.py
@@ -0,0 +1,43 @@
+#
+# Project Wok
+#
+# Copyright IBM Corp, 2016
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License, or (at your option) any later version.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301 USA
+
+import wok.template
+
+from wok.control.base import SimpleCollection
+from wok.control.utils import get_class_name, model_fn
+from wok.control.utils import UrlSubNode
+
+
+ at UrlSubNode("logs")
+class Logs(SimpleCollection):
+    def __init__(self, model):
+        super(Logs, self).__init__(model)
+        self.role_key = 'logs'
+        self.admin_methods = ['GET']
+
+    def get(self, filter_params):
+        res_list = []
+
+        try:
+            get_list = getattr(self.model, model_fn(self, 'get_list'))
+            res_list = get_list(filter_params)
+        except AttributeError:
+            pass
+
+        return wok.template.render(get_class_name(self), res_list)
diff --git a/src/wok/model/logs.py b/src/wok/model/logs.py
new file mode 100644
index 0000000..89a79ab
--- /dev/null
+++ b/src/wok/model/logs.py
@@ -0,0 +1,31 @@
+#
+# Project Wok
+#
+# Copyright IBM Corp, 2016
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License, or (at your option) any later version.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301 USA
+
+from wok.reqlogger import RequestParser
+
+
+class LogsModel(object):
+    def __init__(self, **kargs):
+        pass
+
+    def get_list(self, filter_params):
+        if filter_params:
+            return RequestParser().getFilteredRecords(filter_params)
+
+        return RequestParser().getRecords()
-- 
1.9.1




More information about the Kimchi-devel mailing list