Cinder's API is a bit confusing and there's an awful lot of duplicate code currently. Over the years we've done .../api/v1|v2 and now v3 as well as keeping contrib items around forever (including some overlapping extension modules).
Nova did a pretty clean migration to micro versions and serves as a pretty clean example of how we might be able to clean things up, remove duplicate code and make things a bit easier to understand and maintain.
Rather than have independent V1, V2, V3 and contrib directories we should move all manager files under a new .../api/openstack/volume directory (analogous to nova/api/openstack/compute). We can use the versioning decorators and the route/map file as well as reuse views without all the duplication and confusion that we currently have.
https:/ /review. openstack. org/#/c/ 438230/ is a start of cleaning up some of the code before we think about moving any of it somewhere else.