Spec Lite: Add human readable export location support¶
- problem:
Export locations are usually too difficult to memorize. Currently, there is no way to determine the export location before the share is created, so users wait until the share creation request gets completed, and then they check the export locations to mount the share. The generated export locations are often not human readable and it is hard to memorize and control them.
- solution:
We could introduce a new field for shares where users would be able to specify a custom export location in the share creation. It should be easier for them to memorize the export location of the share, in case there is need to mount the share again. If this field is specified during the creation request, the backends that support such functionality would be able to create multiple export locations for a given share, and users would be able to mount the shares either using the human readable export location, or other if they exist. It’s possible backends that implement this feature may only be able to provide one export path. The new field will be called
mount_point_name
and it will be added to the shares model. This field will not accept special characters other than underscores. If special characters other than underscores are provided, the manila api service is going to raise HTTP BadRequest, warning that such characters are not allowed. An export location must be unique in a share server. So, when a request to create a share is received, if amount_point_name
was provided, the project name will be prepended to it. The number of characters provided by the user added to the number of characters in the project name can not exceed 255 characters, otherwise the request will be denied. It is reasonable to think that the project name can be easily remembered by the users, so it is still a better option compared to an id, and we can be sure that appending the project name to the custom mount point name will not drift apart from this proposal main goal. So the manila share service will look up for duplicatemount_point_name
values and if it finds any, the creation will fail. It is possible that two projects in different domains have the same name, and users coincidentally set the samemount_point_name
while creating a share. In such cases, the share will not be created and its status will be set to error. A user message will be created for both scenarios. A new back end capability calledhuman_readable_export_location_support
will be added and drivers that support such capability should report it asTrue
. Administrators will need to create share types with such extra spec set toTrue
. As the manila share API will perform validations using this extra spec, it must be always tenant-visible. By having this extra-spec, the scheduler can also filter out backends that do not support such functionality. In case of a share migration, if a new share type is provided, and it hashuman_readable_export_location_support=True
, the migration will fail in the scheduler if the chosen destination backend doesn’t support it. If a new share type was specified and it differently from the former does not support custom names for export locations, the migration will succeed, the custom export location won’t be created and themount_point_name
field value will be set toNone
. Administrators will be able to specify a custom mount point name to be configured in the migrated share through a new parameter called--new-mount-point-name
, in themigration-start
command. This will help administrators to avoid possible failures caused by duplicated custom export locations in the migration. So in a share creation scenario, the users will be able to create shares like:$ manila create nfs 1 --name share_name --mount-point-name custom_export_path
And users will be able to mount shares using the custom export location, as in this example:
$ sudo mount -t nfs 10.1.0.2:/project_name_custom_export_path /mnt/my_share
- impacts:
- REST API Impact.
A microversion bump to the share API.
The API will accept the field
mount_point_name
.
- Documentation Impact
User guide
API Reference
Contributor guide
- Database Impact
A new field called
mount_point_name
will be added to theshares
model.
- Python-manilaclient and OSClient impact
The share
create
command will be modified to accept the--mount-point-name
parameter in the shares creation.The
migration-start
command will be modified to accept the--new-mount-point-name
parameter.
This implementation is not supposed to impact performance on any aspect.
- alternative:
As an alternative, drivers could reuse the name and the description of shares and generate human readable export locations, but names can be duplicated and backends may fail due to that.
- timeline:
Include in Xena release.
- link:
https://blueprints.launchpad.net/manila/+spec/human-readable-export-locations
- assignee:
carloss