diff options
author | Taseer Ahmed <taseer94@gmail.com> | 2017-08-15 23:04:23 +0500 |
---|---|---|
committer | Taseer Ahmed <taseer94@gmail.com> | 2017-08-20 22:15:25 +0500 |
commit | 0cfd0baf13b2cf1d78cbe98b2c7ded9e51ffe952 (patch) | |
tree | 875432c5fdde8ba90f1b8bbefe55b9492d7f7766 /docker | |
parent | eb04143319767bb713844c3121338cab5ca5c994 (diff) |
REST API for logs
JIRA: STORPERF-94
Change-Id: I59189109d7f731977fc682b3fb78e60bc92a8270
Signed-off-by: Taseer Ahmed <taseer94@gmail.com>
Diffstat (limited to 'docker')
-rw-r--r-- | docker/storperf-master/rest_server.py | 30 | ||||
-rw-r--r-- | docker/storperf-master/storperf/storperf_master.py | 17 |
2 files changed, 47 insertions, 0 deletions
diff --git a/docker/storperf-master/rest_server.py b/docker/storperf-master/rest_server.py index 19f87ca..8d1ad78 100644 --- a/docker/storperf-master/rest_server.py +++ b/docker/storperf-master/rest_server.py @@ -26,6 +26,35 @@ api = swagger.docs(Api(app), apiVersion='1.0') storperf = StorPerfMaster() +class Logs(Resource): + def __init__(self): + self.logger = logging.getLogger(__name__) + + @swagger.operation( + notes="Fetch logs", + parameters=[ + { + "name": "lines", + "description": "The number of lines to fetch", + "required": "False", + "type": "string", + "allowedMultiple": "False", + "paramType": "query" + } + ] + ) + def get(self): + lines = request.args.get('lines') + if lines: + try: + lines = int(lines) + except Exception: + pass + else: + lines = 35 + return jsonify({'logs': storperf.get_logs(lines)}) + + @swagger.model class ConfigurationRequestModel: resource_fields = { @@ -343,6 +372,7 @@ def setup_logging(default_path='logging.json', api.add_resource(Configure, "/api/v1.0/configurations") api.add_resource(Quota, "/api/v1.0/quotas") api.add_resource(Job, "/api/v1.0/jobs") +api.add_resource(Logs, "/api/v1.0/logs") if __name__ == "__main__": setup_logging() diff --git a/docker/storperf-master/storperf/storperf_master.py b/docker/storperf-master/storperf/storperf_master.py index 8c2a7b4..7f2c395 100644 --- a/docker/storperf-master/storperf/storperf_master.py +++ b/docker/storperf-master/storperf/storperf_master.py @@ -256,6 +256,23 @@ class StorPerfMaster(object): 'workloads', str(self._test_executor.workload_modules)) + def get_logs(self, lines=None): + LOG_DIR = '/var/log/supervisor/storperf-webapp.log' + + if isinstance(lines, int): + logs = [] + index = 0 + for line in reversed(open(LOG_DIR).readlines()): + if index != int(lines): + logs.insert(0, line.strip()) + index += 1 + else: + break + else: + with open(LOG_DIR) as f: + logs = f.read().split('\n') + return logs + def create_stack(self): if (self.stack_id is not None): raise ParameterError("ERROR: Stack has already been created") |