diff options
author | chenjiankun <chenjiankun1@huawei.com> | 2017-07-07 03:13:36 +0000 |
---|---|---|
committer | chenjiankun <chenjiankun1@huawei.com> | 2017-07-11 09:47:30 +0000 |
commit | 0d18f9d3299480cb43e6b335180e5cbdb58505c3 (patch) | |
tree | a35aa6373a88eddb3d13f4fdb7cd3db9bad1a4ee /api/__init__.py | |
parent | 41136dafb30d0c410e92f9f7a7c19eae60f224e2 (diff) |
Yardstick API architecture improvement
JIRA: YARDSTICK-710
Since we have the plan to upload api v2 and gui.
We need to add put and delete method.
So the architecture need to be improved.
Change-Id: Ie20a79c26ef6c581897ce4e63980fa2895b162d2
Signed-off-by: chenjiankun <chenjiankun1@huawei.com>
Diffstat (limited to 'api/__init__.py')
-rw-r--r-- | api/__init__.py | 63 |
1 files changed, 62 insertions, 1 deletions
diff --git a/api/__init__.py b/api/__init__.py index c6cbbf104..dda12aa07 100644 --- a/api/__init__.py +++ b/api/__init__.py @@ -1,4 +1,65 @@ -from yardstick import _init_logging +############################################################################## +# Copyright (c) 2016 Huawei Technologies Co.,Ltd and others. +# +# All rights reserved. This program and the accompanying materials +# are made available under the terms of the Apache License, Version 2.0 +# which accompanies this distribution, and is available at +# http://www.apache.org/licenses/LICENSE-2.0 +############################################################################## +from __future__ import absolute_import +import logging + +from flask import request +from flask_restful import Resource +from yardstick import _init_logging +from yardstick.common import constants as consts +from yardstick.common import utils as common_utils _init_logging() +LOG = logging.getLogger(__name__) +LOG.setLevel(logging.DEBUG) + + +class ApiResource(Resource): + + def _post_args(self): + data = request.json if request.json else {} + params = common_utils.translate_to_str(data) + action = params.get('action', request.form.get('action', '')) + args = params.get('args', {}) + + try: + args['file'] = request.files['file'] + except KeyError: + pass + + LOG.debug('Input args is: action: %s, args: %s', action, args) + + return action, args + + def _get_args(self): + args = common_utils.translate_to_str(request.args) + LOG.debug('Input args is: args: %s', args) + + return args + + def _dispatch_post(self): + action, args = self._post_args() + return self._dispatch(args, action) + + def _dispatch(self, args, action): + try: + return getattr(self, action)(args) + except AttributeError: + common_utils.result_handler(consts.API_ERROR, 'No such action') + + +class Url(object): + + def __init__(self, url, endpoint): + super(Url, self).__init__() + self.url = url + self.endpoint = endpoint + +common_utils.import_modules_from_package("api.resources") |