]> git.proxmox.com Git - ceph.git/blobdiff - ceph/src/spdk/test/json_config/config_filter.py
import 15.2.0 Octopus source
[ceph.git] / ceph / src / spdk / test / json_config / config_filter.py
index 59e96f94712ca7cbefe93e34b72424c574efc23f..831b7a11cdf300da16db86b0516004125f7a8f1b 100755 (executable)
@@ -25,7 +25,7 @@ def filter_methods(do_remove_global_rpcs):
     global_rpcs = [
         'set_iscsi_options',
         'set_nvmf_target_config',
-        'set_nvmf_target_options',
+        'set_nvmf_target_max_subsystems',
         'nvmf_create_transport',
         'set_bdev_options',
         'set_bdev_nvme_options',
@@ -52,19 +52,43 @@ def filter_methods(do_remove_global_rpcs):
     print(json.dumps(out, indent=2))
 
 
+def check_empty():
+    data = json.loads(sys.stdin.read())
+    if not data:
+        raise EOFError("Cant read config!")
+
+    for s in data['subsystems']:
+        if s['config']:
+            print("Config not empty")
+            print(s['config'])
+            sys.exit(1)
+
+
 if __name__ == "__main__":
-    parser = argparse.ArgumentParser()
-    parser.add_argument('-method', dest='method')
+    parser = argparse.ArgumentParser(formatter_class=argparse.RawTextHelpFormatter)
+    parser.add_argument('-method', dest='method', default=None,
+                        help="""One of the methods:
+check_empty
+    check if provided configuration is logically empty
+delete_global_parameters
+    remove pre-init configuration (pre start_subsystem_init RPC methods)
+delete_configs
+    remove post-init configuration (post start_subsystem_init RPC methods)
+sort
+    remove nothing - just sort JSON objects (and subobjects but not arrays)
+    in lexicographical order. This can be used to do plain text diff.""")
 
     args = parser.parse_args()
     if args.method == "delete_global_parameters":
         filter_methods(True)
     elif args.method == "delete_configs":
         filter_methods(False)
+    elif args.method == "check_empty":
+        check_empty()
     elif args.method == "sort":
         """ Wrap input into JSON object so any input is possible here
         like output from get_bdevs RPC method"""
         o = json.loads('{ "the_object": ' + sys.stdin.read() + ' }')
         print(json.dumps(sort_json_object(o)['the_object'], indent=2))
     else:
-        raise ValueError("Invalid method '{}'".format(args.method))
+        raise ValueError("Invalid method '{}'\n\n{}".format(args.method, parser.format_help()))