From: Ricardo Dias Date: Sun, 8 Apr 2018 17:37:30 +0000 (+0100) Subject: mgr/dashboard: restcontroller: fix detection of id args in element requests X-Git-Tag: v13.1.0~353^2 X-Git-Url: http://git.apps.os.sepia.ceph.com/?a=commitdiff_plain;h=3e7d75b579f1ab9facbf2bf147cc7b0560896408;p=ceph.git mgr/dashboard: restcontroller: fix detection of id args in element requests Fixes: https://tracker.ceph.com/issues/23593 Signed-off-by: Ricardo Dias --- diff --git a/src/pybind/mgr/dashboard/controllers/__init__.py b/src/pybind/mgr/dashboard/controllers/__init__.py index 3eaa28f713320..e0a25e56315ae 100644 --- a/src/pybind/mgr/dashboard/controllers/__init__.py +++ b/src/pybind/mgr/dashboard/controllers/__init__.py @@ -351,17 +351,17 @@ class RESTController(BaseController): """ - _method_mapping = { - ('GET', False): ('list', 200), - ('PUT', False): ('bulk_set', 200), - ('PATCH', False): ('bulk_set', 200), - ('POST', False): ('create', 201), - ('DELETE', False): ('bulk_delete', 204), - ('GET', True): ('get', 200), - ('PUT', True): ('set', 200), - ('PATCH', True): ('set', 200), - ('DELETE', True): ('delete', 204), - } + _method_mapping = collections.OrderedDict([ + (('GET', False), ('list', 200)), + (('PUT', False), ('bulk_set', 200)), + (('PATCH', False), ('bulk_set', 200)), + (('POST', False), ('create', 201)), + (('DELETE', False), ('bulk_delete', 204)), + (('GET', True), ('get', 200)), + (('PUT', True), ('set', 200)), + (('PATCH', True), ('set', 200)), + (('DELETE', True), ('delete', 204)), + ]) @classmethod def endpoints(cls): @@ -453,7 +453,8 @@ class RESTController(BaseController): kwargs.update(data.items()) return func(*args, **kwargs) - return func(data, *args, **kwargs) + kwargs['data'] = data + return func(*args, **kwargs) return inner @staticmethod diff --git a/src/pybind/mgr/dashboard/tests/test_tools.py b/src/pybind/mgr/dashboard/tests/test_tools.py index da74f69d44e07..b5eb26f25454d 100644 --- a/src/pybind/mgr/dashboard/tests/test_tools.py +++ b/src/pybind/mgr/dashboard/tests/test_tools.py @@ -29,7 +29,7 @@ class FooResource(RESTController): def bulk_delete(self): FooResource.elems = [] - def set(self, data, key): + def set(self, key, data): FooResource.elems[int(key)] = data return dict(key=key, **data)