注意
本文档适用于 Ceph 的开发版本。
插件
ceph-volume 最初是为了提供对使用 lvm 作为 OSD 底层系统的支持而启动的。它作为工具的一部分包含在内,但被视为插件。
这种模块化允许其他设备或类似设备的技术能够使用和重用所提供的实用程序和工作流。
添加插件
作为一个 Python 工具,插件使用 setuptools 入口点。为了使新插件可用,它应该在其 setup.py 文件中有一个类似于这样的条目:
setup(
...
entry_points = dict(
ceph_volume_handlers = [
'my_command = my_package.my_module:MyClass',
],
),
MyClass 应该是一个接受 sys.argv 作为其参数的类,ceph-volume 将在实例化时将其传入并调用它们的 main 方法。
例如,ZFS 的插件可能看起来像这样:
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)
...
它的入口点(通过 setuptools)在 setup.py 中看起来像:
entry_points = {
'ceph_volume_handlers': [
'zfs = ceph_volume_zfs.zfs:ZFS',
],
},
安装后,zfs 子命令将被列出并可以按如下方式使用:
ceph-volume zfs