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',
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()))