initial code repo
[stor4nfv.git] / src / ceph / src / ceph-volume / ceph_volume / devices / lvm / create.py
diff --git a/src/ceph/src/ceph-volume/ceph_volume/devices/lvm/create.py b/src/ceph/src/ceph-volume/ceph_volume/devices/lvm/create.py
new file mode 100644 (file)
index 0000000..353b26a
--- /dev/null
@@ -0,0 +1,57 @@
+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)