From: Tomer Haskalovitch Date: Wed, 15 Jul 2026 12:39:12 +0000 (+0300) Subject: pybind: fix error message when using force parameter if it doesn't exist in a command... X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=e8be5e26972c093f8486130579a111fec24ff210;p=ceph.git pybind: fix error message when using force parameter if it doesn't exist in a command's arguments schema Fixes: https://tracker.ceph.com/issues/78291 Signed-off-by: Tomer Haskalovitch --- diff --git a/src/pybind/ceph_argparse.py b/src/pybind/ceph_argparse.py index c7e3211a5e8..275c39af214 100644 --- a/src/pybind/ceph_argparse.py +++ b/src/pybind/ceph_argparse.py @@ -1241,7 +1241,7 @@ def validate(args: List[str], or myarg == "--yes-i-really-mean-it" \ or myarg == "--yes-i-really-really-mean-it" \ or myarg == "--yes-i-really-really-mean-it-not-faking" \ - or myarg == "--force" \ + or (myarg == "--force" and 'force' in arg_descs_by_name) \ or injectargs if not is_value: diff --git a/src/test/pybind/test_ceph_argparse.py b/src/test/pybind/test_ceph_argparse.py index c5af9228f57..99a64a37187 100755 --- a/src/test/pybind/test_ceph_argparse.py +++ b/src/test/pybind/test_ceph_argparse.py @@ -1346,6 +1346,30 @@ class TestValidate(unittest.TestCase): for arg_type in (self.ARGS, self.KWARGS, self.KWARGS_EQ, self.MIXED): self._arg_kwarg_test(self.prefix, self.args, self.sig, arg_type) + def test_force_rejected_when_not_in_schema(self): + sig = parse_funcsig([ + {'name': 'nqn', 'type': 'CephString'}, + {'name': 'nsid', 'type': 'CephString'}, + ]) + self.assertRaises(ArgumentValid, validate, ['nqn1', '--force'], sig) + self.assertRaises(ArgumentValid, validate, ['--force', 'nqn1'], sig) + + def test_force_accepted_when_in_schema_as_bool(self): + sig = parse_funcsig([ + {'name': 'nqn', 'type': 'CephString'}, + {'name': 'force', 'type': 'CephBool', 'req': False}, + ]) + result = validate(['nqn1', '--force'], sig) + self.assertEqual(result.get('force'), True) + + def test_force_accepted_when_in_schema_as_string(self): + sig = parse_funcsig([ + {'name': 'nqn', 'type': 'CephString'}, + {'name': 'force', 'type': 'CephString', 'req': False}, + ]) + result = validate(['nqn1', '--force'], sig) + self.assertEqual(result.get('force'), '--force') + if __name__ == '__main__': unittest.main()