From 2bccb866bdd7f101d529e4455f2bd37b7487ac31 Mon Sep 17 00:00:00 2001 From: Ricardo Dias Date: Thu, 19 Apr 2018 10:15:27 +0100 Subject: [PATCH] mgr/dashboard: restcontroller: removed @args_from_json Signed-off-by: Ricardo Dias --- src/pybind/mgr/dashboard/.pylintrc | 4 +++- src/pybind/mgr/dashboard/controllers/__init__.py | 16 ++-------------- src/pybind/mgr/dashboard/controllers/auth.py | 1 - src/pybind/mgr/dashboard/controllers/cephfs.py | 2 +- .../controllers/erasure_code_profile.py | 2 -- src/pybind/mgr/dashboard/controllers/pool.py | 2 -- src/pybind/mgr/dashboard/controllers/rbd.py | 8 +------- .../mgr/dashboard/controllers/tcmu_iscsi.py | 2 +- .../mgr/dashboard/tests/test_rest_tasks.py | 5 ----- src/pybind/mgr/dashboard/tests/test_tools.py | 13 ++++++------- 10 files changed, 14 insertions(+), 41 deletions(-) diff --git a/src/pybind/mgr/dashboard/.pylintrc b/src/pybind/mgr/dashboard/.pylintrc index 13e23167f6088..96f88facc3fd7 100644 --- a/src/pybind/mgr/dashboard/.pylintrc +++ b/src/pybind/mgr/dashboard/.pylintrc @@ -132,7 +132,9 @@ disable=print-statement, no-self-use, too-few-public-methods, no-member, - fixme + fixme, + too-many-arguments, + too-many-locals # Enable the message, report, category or checker with the given id(s). You can # either give multiple identifier separated by comma (,) or put this option diff --git a/src/pybind/mgr/dashboard/controllers/__init__.py b/src/pybind/mgr/dashboard/controllers/__init__.py index 67c489f0443c0..b79b5d0f03869 100644 --- a/src/pybind/mgr/dashboard/controllers/__init__.py +++ b/src/pybind/mgr/dashboard/controllers/__init__.py @@ -154,7 +154,6 @@ class ApiRoot(object): return tpl.format(lis='\n'.join(endpoints)) -# pylint: disable=too-many-locals def browsable_api_view(meth): def wrapper(self, *vpath, **kwargs): assert isinstance(self, BaseController) @@ -520,11 +519,6 @@ class RESTController(BaseController): return method(*vpath, **params) - @staticmethod - def args_from_json(func): - func._args_from_json_ = True - return func - @staticmethod def _function_args(func): if sys.version_info > (3, 0): # pylint: disable=no-else-return @@ -538,10 +532,7 @@ class RESTController(BaseController): def inner(*args, **kwargs): if cherrypy.request.headers.get('Content-Type', '') == 'application/x-www-form-urlencoded': - if hasattr(func, '_args_from_json_'): # pylint: disable=no-else-return - return func(*args, **kwargs) - else: - return func(kwargs) + return func(*args, **kwargs) content_length = int(cherrypy.request.headers['Content-Length']) body = cherrypy.request.body.read(content_length) @@ -553,11 +544,8 @@ class RESTController(BaseController): except Exception as e: raise cherrypy.HTTPError(400, 'Failed to decode JSON: {}' .format(str(e))) - if hasattr(func, '_args_from_json_'): - kwargs.update(data.items()) - return func(*args, **kwargs) - kwargs['data'] = data + kwargs.update(data.items()) return func(*args, **kwargs) return inner diff --git a/src/pybind/mgr/dashboard/controllers/auth.py b/src/pybind/mgr/dashboard/controllers/auth.py index cd9d9237dd685..4f37a133036e0 100644 --- a/src/pybind/mgr/dashboard/controllers/auth.py +++ b/src/pybind/mgr/dashboard/controllers/auth.py @@ -26,7 +26,6 @@ class Auth(RESTController): | | seconds without activity | """ - @RESTController.args_from_json def create(self, username, password, stay_signed_in=False): now = time.time() config_username = mgr.get_config('username', None) diff --git a/src/pybind/mgr/dashboard/controllers/cephfs.py b/src/pybind/mgr/dashboard/controllers/cephfs.py index ddb41cd10bbd3..5ef8066262460 100644 --- a/src/pybind/mgr/dashboard/controllers/cephfs.py +++ b/src/pybind/mgr/dashboard/controllers/cephfs.py @@ -97,7 +97,7 @@ class CephFS(BaseController): return names - # pylint: disable=too-many-locals,too-many-statements,too-many-branches + # pylint: disable=too-many-statements,too-many-branches def fs_status(self, fs_id): mds_versions = defaultdict(list) diff --git a/src/pybind/mgr/dashboard/controllers/erasure_code_profile.py b/src/pybind/mgr/dashboard/controllers/erasure_code_profile.py index a6602ebea0088..16929081d6d37 100644 --- a/src/pybind/mgr/dashboard/controllers/erasure_code_profile.py +++ b/src/pybind/mgr/dashboard/controllers/erasure_code_profile.py @@ -36,8 +36,6 @@ class ErasureCodeProfile(RESTController): except KeyError: raise NotFound('No such erasure code profile') - # pylint: disable=too-many-arguments - @RESTController.args_from_json def create(self, name, k, m, plugin=None, ruleset_failure_domain=None, **kwargs): kwargs['k'] = k kwargs['m'] = m diff --git a/src/pybind/mgr/dashboard/controllers/pool.py b/src/pybind/mgr/dashboard/controllers/pool.py index 6a8f605d02c08..d842be6bbfb64 100644 --- a/src/pybind/mgr/dashboard/controllers/pool.py +++ b/src/pybind/mgr/dashboard/controllers/pool.py @@ -59,8 +59,6 @@ class Pool(RESTController): return CephService.send_command('mon', 'osd pool delete', pool=pool_name, pool2=pool_name, sure='--yes-i-really-really-mean-it') - # pylint: disable=too-many-arguments, too-many-locals - @RESTController.args_from_json def create(self, pool, pg_num, pool_type, erasure_code_profile=None, flags=None, application_metadata=None, rule_name=None, **kwargs): ecp = erasure_code_profile if erasure_code_profile else None diff --git a/src/pybind/mgr/dashboard/controllers/rbd.py b/src/pybind/mgr/dashboard/controllers/rbd.py index aa748f51df236..a67827e79434d 100644 --- a/src/pybind/mgr/dashboard/controllers/rbd.py +++ b/src/pybind/mgr/dashboard/controllers/rbd.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# pylint: disable=too-many-arguments,too-many-locals,unused-argument, +# pylint: disable=unused-argument # pylint: disable=too-many-statements,too-many-branches from __future__ import absolute_import @@ -267,7 +267,6 @@ class Rbd(RESTController): @RbdTask('create', {'pool_name': '{pool_name}', 'image_name': '{name}'}, 2.0) - @RESTController.args_from_json def create(self, name, pool_name, size, obj_size=None, features=None, stripe_unit=None, stripe_count=None, data_pool=None): @@ -294,7 +293,6 @@ class Rbd(RESTController): return _rbd_call(pool_name, rbd_inst.remove, image_name) @RbdTask('edit', ['{pool_name}', '{image_name}'], 4.0) - @RESTController.args_from_json def set(self, pool_name, image_name, name=None, size=None, features=None): def _edit(ioctx, image): rbd_inst = rbd.RBD() @@ -330,7 +328,6 @@ class Rbd(RESTController): 'dest_pool_name': '{dest_pool_name}', 'dest_image_name': '{dest_image_name}'}, 2.0) @RESTController.resource(['POST']) - @RESTController.args_from_json def copy(self, pool_name, image_name, dest_pool_name, dest_image_name, obj_size=None, features=None, stripe_unit=None, stripe_count=None, data_pool=None): @@ -360,7 +357,6 @@ class RbdSnapshot(RESTController): @RbdTask('snap/create', ['{pool_name}', '{image_name}', '{snapshot_name}'], 2.0) - @RESTController.args_from_json def create(self, pool_name, image_name, snapshot_name): def _create_snapshot(ioctx, img, snapshot_name): img.create_snap(snapshot_name) @@ -379,7 +375,6 @@ class RbdSnapshot(RESTController): @RbdTask('snap/edit', ['{pool_name}', '{image_name}', '{snapshot_name}'], 4.0) - @RESTController.args_from_json def set(self, pool_name, image_name, snapshot_name, new_snap_name=None, is_protected=None): def _edit(ioctx, img, snapshot_name): @@ -410,7 +405,6 @@ class RbdSnapshot(RESTController): 'child_pool_name': '{child_pool_name}', 'child_image_name': '{child_image_name}'}, 2.0) @RESTController.resource(['POST']) - @RESTController.args_from_json def clone(self, pool_name, image_name, snapshot_name, child_pool_name, child_image_name, obj_size=None, features=None, stripe_unit=None, stripe_count=None, data_pool=None): diff --git a/src/pybind/mgr/dashboard/controllers/tcmu_iscsi.py b/src/pybind/mgr/dashboard/controllers/tcmu_iscsi.py index 098e4b0d7c49e..942f1c60c70b0 100644 --- a/src/pybind/mgr/dashboard/controllers/tcmu_iscsi.py +++ b/src/pybind/mgr/dashboard/controllers/tcmu_iscsi.py @@ -11,7 +11,7 @@ SERVICE_TYPE = 'tcmu-runner' @ApiController('tcmuiscsi') @AuthRequired() class TcmuIscsi(RESTController): - # pylint: disable=too-many-locals,too-many-nested-blocks + # pylint: disable=too-many-nested-blocks def list(self): # pylint: disable=unused-argument daemons = {} images = {} diff --git a/src/pybind/mgr/dashboard/tests/test_rest_tasks.py b/src/pybind/mgr/dashboard/tests/test_rest_tasks.py index 6f8f500f016e0..e5c8b068a6053 100644 --- a/src/pybind/mgr/dashboard/tests/test_rest_tasks.py +++ b/src/pybind/mgr/dashboard/tests/test_rest_tasks.py @@ -14,32 +14,27 @@ class TaskTest(RESTController): sleep_time = 0.0 @Task('task/create', {'param': '{param}'}, wait_for=1.0) - @RESTController.args_from_json def create(self, param): time.sleep(TaskTest.sleep_time) return {'my_param': param} @Task('task/set', {'param': '{2}'}, wait_for=1.0) - @RESTController.args_from_json def set(self, key, param=None): time.sleep(TaskTest.sleep_time) return {'key': key, 'my_param': param} @Task('task/delete', ['{key}'], wait_for=1.0) - @RESTController.args_from_json def delete(self, key): # pylint: disable=unused-argument time.sleep(TaskTest.sleep_time) @Task('task/foo', ['{param}']) @RESTController.collection(['POST']) - @RESTController.args_from_json def foo(self, param): return {'my_param': param} @Task('task/bar', ['{key}', '{param}']) @RESTController.resource(['PUT']) - @RESTController.args_from_json def bar(self, key, param=None): return {'my_param': param, 'key': key} diff --git a/src/pybind/mgr/dashboard/tests/test_tools.py b/src/pybind/mgr/dashboard/tests/test_tools.py index 4ec6ce943fb88..e89f4697fc476 100644 --- a/src/pybind/mgr/dashboard/tests/test_tools.py +++ b/src/pybind/mgr/dashboard/tests/test_tools.py @@ -19,9 +19,9 @@ class FooResource(RESTController): def list(self): return FooResource.elems - def create(self, data): - FooResource.elems.append(data) - return data + def create(self, a): + FooResource.elems.append({'a': a}) + return {'a': a} def get(self, key): return {'detail': (key, [])} @@ -32,9 +32,9 @@ class FooResource(RESTController): def bulk_delete(self): FooResource.elems = [] - def set(self, key, data): - FooResource.elems[int(key)] = data - return dict(key=key, **data) + def set(self, key, newdata): + FooResource.elems[int(key)] = {'newdata': newdata} + return dict(key=key, newdata=newdata) @ApiController('foo/:key/:method') @@ -45,7 +45,6 @@ class FooResourceDetail(RESTController): @ApiController('fooargs') class FooArgs(RESTController): - @RESTController.args_from_json def set(self, code, name=None, opt1=None, opt2=None): return {'code': code, 'name': name, 'opt1': opt1, 'opt2': opt2} -- 2.39.5