--- /dev/null
+from ceph_volume.util import arg_validators
+import argparse
+
+
+def common_parser(prog, description):
+ """
+ Both prepare and create share the same parser, those are defined here to
+ avoid duplication
+ """
+ parser = argparse.ArgumentParser(
+ prog=prog,
+ formatter_class=argparse.RawDescriptionHelpFormatter,
+ description=description,
+ )
+ required_args = parser.add_argument_group('required arguments')
+ parser.add_argument(
+ '--journal',
+ help='(filestore) A logical volume (vg_name/lv_name), or path to a device',
+ )
+ required_args.add_argument(
+ '--data',
+ required=True,
+ type=arg_validators.LVPath(),
+ help='OSD data path. A physical device or logical volume',
+ )
+ parser.add_argument(
+ '--journal-size',
+ default=5,
+ metavar='GB',
+ type=int,
+ help='(filestore) Size (in GB) for the journal',
+ )
+ parser.add_argument(
+ '--bluestore',
+ action='store_true',
+ help='Use the bluestore objectstore',
+ )
+ parser.add_argument(
+ '--filestore',
+ action='store_true',
+ help='Use the filestore objectstore',
+ )
+ parser.add_argument(
+ '--osd-id',
+ help='Reuse an existing OSD id',
+ )
+ parser.add_argument(
+ '--osd-fsid',
+ help='Reuse an existing OSD fsid',
+ )
+ parser.add_argument(
+ '--block.db',
+ dest='block_db',
+ help='(bluestore) Path to bluestore block.db logical volume or device',
+ )
+ parser.add_argument(
+ '--block.wal',
+ dest='block_wal',
+ help='(bluestore) Path to bluestore block.wal logical volume or device',
+ )
+ # Do not parse args, so that consumers can do something before the args get
+ # parsed triggering argparse behavior
+ return parser
+
+
+create_parser = common_parser # noqa
+prepare_parser = common_parser # noqa