Contributing a New Flocker Storage BackendΒΆ

Flocker supports pluggable storage backends. That means that any storage system that is able to present itself as a network-based block device can serve as the underlying storage for a Docker data volume managed by Flocker.

If you wish to use a storage device that is not supported by Flocker or an existing plugin, you can implement this support yourself. The documents listed in the contents below will show you how to implement a block device backend for a storage system of your choosing.

Your storage driver must be a Python 2.7 library providing a class implementing the flocker.node.agents.blockdevice.IBlockDeviceAPI interface.

Note

If you want your storage driver to support Flocker Storage Profiles, you can also implement the flocker.node.agents.blockdevice.IProfiledBlockDeviceAPI interface.

Please note that you must implement bronze, silver and gold profiles.

If you do choose to implement profiles, please don’t hesitate to contact us with your feedback, comments and suggestions about how you’re using this feature and how we might continue to improve it in future. We are looking to extend the profiles functionality, and would love feedback from driver writers.

Flocker implements generic logic for network-based block device storage already, and these implementations can serve as examples:

The following documents will also provide detailed instructions for testing, certifying, and publishing your driver.

If you have any questions not addressed in this section, please get in touch with us either via the #clusterhq channel on irc.freenode.net, or by filing a GitHub issue. More information about contacting ClusterHQ can be found in our Talk to Us section.