--- /dev/null
+from __future__ import print_function
+from textwrap import dedent
+from ceph_volume.util import system
+from ceph_volume import decorators
+from .common import create_parser
+from .prepare import Prepare
+from .activate import Activate
+
+
+class Create(object):
+
+ help = 'Create a new OSD from an LVM device'
+
+ def __init__(self, argv):
+ self.argv = argv
+
+ @decorators.needs_root
+ def create(self, args):
+ if not args.osd_fsid:
+ args.osd_fsid = system.generate_uuid()
+ Prepare([]).prepare(args)
+ Activate([]).activate(args)
+
+ def main(self):
+ sub_command_help = dedent("""
+ Create an OSD by assigning an ID and FSID, registering them with the
+ cluster with an ID and FSID, formatting and mounting the volume, adding
+ all the metadata to the logical volumes using LVM tags, and starting
+ the OSD daemon.
+
+ Example calls for supported scenarios:
+
+ Filestore
+ ---------
+
+ Existing logical volume (lv) or device:
+
+ ceph-volume lvm create --filestore --data {vg name/lv name} --journal /path/to/device
+
+ Or:
+
+ ceph-volume lvm create --filestore --data {vg name/lv name} --journal {vg name/lv name}
+
+ """)
+ parser = create_parser(
+ prog='ceph-volume lvm create',
+ description=sub_command_help,
+ )
+ if len(self.argv) == 0:
+ print(sub_command_help)
+ return
+ args = parser.parse_args(self.argv)
+ # Default to bluestore here since defaulting it in add_argument may
+ # cause both to be True
+ if args.bluestore is None and args.filestore is None:
+ args.bluestore = True
+ self.create(args)