mirror of
https://github.com/ceph/ceph
synced 2024-12-20 18:33:44 +00:00
66 lines
1.7 KiB
ReStructuredText
66 lines
1.7 KiB
ReStructuredText
|
.. _ceph-volume-plugins:
|
||
|
|
||
|
Plugins
|
||
|
=======
|
||
|
``ceph-volume`` started initially to provide support for using ``lvm`` as
|
||
|
the underlying system for an OSD. It is included as part of the tool but it is
|
||
|
treated like a plugin.
|
||
|
|
||
|
This modularity, allows for other device or device-like technologies to be able
|
||
|
to consume and re-use the utilities and workflows provided.
|
||
|
|
||
|
Adding Plugins
|
||
|
--------------
|
||
|
As a Python tool, plugins ``setuptools`` entry points. For a new plugin to be
|
||
|
available, it should have an entry similar to this in its ``setup.py`` file:
|
||
|
|
||
|
.. code-block:: python
|
||
|
|
||
|
setup(
|
||
|
...
|
||
|
entry_points = dict(
|
||
|
ceph_volume_handlers = [
|
||
|
'my_command = my_package.my_module:MyClass',
|
||
|
],
|
||
|
),
|
||
|
|
||
|
The ``MyClass`` should be a class that accepts ``sys.argv`` as its argument,
|
||
|
``ceph-volume`` will pass that in at instantiation and call them ``main``
|
||
|
method.
|
||
|
|
||
|
This is how a plugin for ``ZFS`` could look like for example:
|
||
|
|
||
|
.. code-block:: python
|
||
|
|
||
|
class ZFS(object):
|
||
|
|
||
|
help_menu = 'Deploy OSDs with ZFS'
|
||
|
_help = """
|
||
|
Use ZFS as the underlying technology for OSDs
|
||
|
|
||
|
--verbose Increase the verbosity level
|
||
|
"""
|
||
|
|
||
|
def __init__(self, argv):
|
||
|
self.argv = argv
|
||
|
|
||
|
def main(self):
|
||
|
parser = argparse.ArgumentParser()
|
||
|
args = parser.parse_args(self.argv)
|
||
|
...
|
||
|
|
||
|
And its entry point (via ``setuptools``) in ``setup.py`` would looke like:
|
||
|
|
||
|
.. code-block:: python
|
||
|
|
||
|
entry_points = {
|
||
|
'ceph_volume_handlers': [
|
||
|
'zfs = ceph_volume_zfs.zfs:ZFS',
|
||
|
],
|
||
|
},
|
||
|
|
||
|
After installation, the ``zfs`` subcommand would be listed and could be used
|
||
|
as::
|
||
|
|
||
|
ceph-volume zfs
|