]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
pybind: fix error message when using force parameter if it doesn't exist in a command... 70246/head
authorTomer Haskalovitch <tomer.haska@ibm.com>
Wed, 15 Jul 2026 12:39:12 +0000 (15:39 +0300)
committerTomer Haskalovitch <tomer.haska@ibm.com>
Thu, 16 Jul 2026 07:38:14 +0000 (10:38 +0300)
Fixes: https://tracker.ceph.com/issues/78291
Signed-off-by: Tomer Haskalovitch <tomer.haska@ibm.com>
src/pybind/ceph_argparse.py
src/test/pybind/test_ceph_argparse.py

index c7e3211a5e8eb200c541ceb8ab2367873e73cec9..275c39af2147acc74886bc74f4d0d340283280c3 100644 (file)
@@ -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:
index c5af9228f5745535200fc1e11b1ba3c0cebb9b65..99a64a37187790279dbfb3626fb715b97aafd58f 100755 (executable)
@@ -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()