In order for a driver to be accepted into manila code base, there are certain minimum requirements and features that must be met, in order to ensure interoperability and standardized manila functionality among cloud providers.
Driver modes determine if the driver is managing network resources (DHSS = true) in an automated way, in order to segregate tenants and private networks by making use of manila Share Networks, or if it is up to the administrator to manually configure all networks (DHSS = false) and be responsible for segregation, if that is desired. At least one driver mode must be supported. In DHSS = true mode, Share Server entities are used, so the driver must implement functions that setup and teardown such servers.
In order to serve shares as a shared file system service, the driver must support at least one file system sharing protocol, which can be a new protocol or one of the currently supported protocols. The current list of supported protocols is as follows:
Access rules control how shares are accessible, by whom, and what the level of access is. Access rule operations include allowing access and denying access to a given share. The authentication type should be based on IP, User and/or Certificate. Drivers must support read-write and read-only access levels for each supported protocol, either through individual access rules or separate export locations.
In order for manila to function accordingly to the driver being used, the driver must provide a set of information to manila, known as capabilities, as follows:
Certain features, if supported by drivers, need to be reported in order to function correctly in manila, such as:
Note
for more information please see http://docs.openstack.org/developer/manila/devref/capabilities_and_extra_specs.html
Every driver vendor must supply a CI system that tests its drivers continuously for each patch submitted to OpenStack gerrit. This allows for better QA and quicker response and notification for driver vendors when a patch submitted affects an existing driver. The CI system must run all applicable tempest tests, test all patches Jenkins has posted +1 and post its test results.
Note
for more information please see http://docs.openstack.org/infra/system-config/third_party.html
All drivers submitted must be contemplated with unit tests covering at least 90% of the code, preferably 100% if possible. Unit tests must use mock framework and be located in-tree using a structure that mirrors the functional code, such as directory names and filenames. See template below:
manila/[tests/]path/to/brand/new/[test_]driver.py
Drivers submitted must provide and maintain related documentation on openstack-manuals, containing instructions on how to properly install and configure. The intended audience for this manual is cloud operators and administrators. Also, driver maintainers must update the manila share features support mapping documentation found at http://docs.openstack.org/developer/manila/devref/share_back_ends_feature_support_mapping.html
Additional to the minimum required features supported by manila, other optional features can be supported by drivers as they are already supported in manila and can be accessed through the API.
Share Snapshots allow for data respective to a particular point in time to be saved in order to be used later. In manila API, share snapshots taken can only be restored by creating new shares from them, thus the original share remains unaffected. If Snapshots are supported by drivers, they must be crash-consistent.
Some features are initially released as experimental and can be accessed by including specific additional HTTP Request headers. Those features are not recommended for production cloud environments while in experimental stage.
Shares can be created within Consistency Groups in order to guarantee snapshot consistency of multiple shares. In order to make use of this feature, driver vendors must report this capability and implement its functions to work according to the backend, so the feature can be properly invoked through manila API.