Keystone has a sufficient quantity of middleware to justify a separate repo. These will come from multiple projects, to include the Keystone server and python-keystoneclient repositories. This split is specifically to address a few major requests:
Most of the middleware currently lives in python-keystoneclient. However, the middleware code pulls in dependencies specific to servers, and that are not appropriate for command line clients and other integrated scripts. There are sufficiently different use cases that they should be their own repositories and python packages.
Create a new repository called keystonemiddleware and use the oslo-incubator graduation utilities to copy the data from python-keystoneclient/middleware and keystone/middleware while maintaining the commit history. The tests for the middleware code will also be migrated (maintaining history as possible). Only middleware from Keystone that is used by external services will be migrated (e.g. ec2token).
Once the keystonemiddleware package is released the middleware in the python-keystoneclient will be frozen (security fixes only, no new features) and all new development would be done against the code in the new middleware package. Middleware originally from Keystone will be made available (via import) at the old location and wrapped with a deprecation message instead of frozen.
The old middleware code would remain deprecated and available for at least two full OpenStack release cycles. Options for removal will be considered during the L and later development cycles.
The new middleware package will be released independently of the OpenStack named releases (similar to the python-keystoneclient library).
The inital release of the middleware package will be version 1.0.0 (using semver for versioning scheme).
None
None
None
None
None
Deployers will need to update the paste-ini configurations to reference the new location of the middleware. The old middleware will remain available within the python-keystoneclient package for at least two full OpenStack release cycles. The old middleware would receive only security fixes while it remains in the python-keystoneclient package.
Developers will need to be aware of which repo to submit code changes against.
None
Docs will need to be updated as far as where to look for keystone middleware
None