From 0d7b3745dbf11184f12c6229b8bc529aa38d1b0e Mon Sep 17 00:00:00 2001 From: Kefu Chai Date: Sat, 26 Dec 2020 20:02:33 +0800 Subject: [PATCH] pybing/mgr/mgr_module: extract kwargs handling into separated method Signed-off-by: Kefu Chai --- src/pybind/mgr/mgr_module.py | 29 ++++++++++++++--------------- 1 file changed, 14 insertions(+), 15 deletions(-) diff --git a/src/pybind/mgr/mgr_module.py b/src/pybind/mgr/mgr_module.py index f3145f9f5df..35a6421fa3a 100644 --- a/src/pybind/mgr/mgr_module.py +++ b/src/pybind/mgr/mgr_module.py @@ -316,27 +316,26 @@ class CLICommand(object): self.COMMANDS[self.prefix] = self return self.func + def _get_arg_value(self, kwargs_switch, key, val): + if isinstance(val, str) and '=' in val: + k, v = val.split('=', 1) + if self._is_arg_key(k): + kwargs_switch = True + + if kwargs_switch: + k, v = val.split('=', 1) + else: + k, v = key, val + return kwargs_switch, k.replace('-', '_'), v + def call(self, mgr, cmd_dict, inbuf): kwargs = {} kwargs_switch = False for a, d in self.args_dict.items(): if 'req' in d and d['req'] == "false" and a not in cmd_dict: continue - - if isinstance(cmd_dict[a], str) and '=' in cmd_dict[a]: - k, arg = cmd_dict[a].split('=', 1) - if k in self.args_dict: - kwargs_switch = True - - if kwargs_switch: - try: - k, arg = cmd_dict[a].split('=', 1) - except ValueError as e: - mgr.log.error('found positional arg after switching to kwarg parsing') - return -errno.EINVAL, '', 'Error EINVAL: postitional arg not allowed after kwarg' - kwargs[k.replace("-", "_")] = arg - else: - kwargs[a.replace("-", "_")] = cmd_dict[a] + kwargs_switch, k, v = self._get_arg_value(kwargs_switch, a, cmd_dict[a]) + kwargs[k] = v if inbuf: kwargs['inbuf'] = inbuf assert self.func -- 2.39.5