Add proper microversion support
Discussion on etherpad:
https:/
THE PLAN:
- Create per-service dict of feature implementations, with a list of explicit versions that are known to work.
- Service provides a MAX version (called 'latest') and a MIN version (called 'min_version')
- When deciding whether to show a feature on the dashboard, check the versions for that feature, in decreasing order, against the version range provided by the API.
- Use the highest acceptable version, based on the premise that newer should be better (faster, more secure, etc)
... in slightly more detail
1) Feature dict would look something like:
MICROVERSIO
},
}
}
2) Retrieve (and cache) the services MIN and MAX versions as a tuple, for example:
3) Add some magic to allow an easy check for a given feature. This might look something along the lines of:
Behind the scenes, we'll want to find the highest intersection between the list specified by Horizon and the range available in <service>
Tricky parts to consider
- Microversions can break. There are no guarantees that something will be consistently implemented, or implemented at all between API microversions. Because of this, we should be explicit about which microversion to use.
Reference: http://
- When adding a new microversion feature, we should have at least two versions; the oldest known working version (this should be in the API docs as the version that introduced the feature) and the current version of the API that this works against. This should allow newer Horizon versions to keep compatibility with older deployments, so there is no reason not to upgrade Horizon.
- We may end up having to main multiple "feature implementations" per feature, if something was heavily rewritten between microversions. These should probably be listed as separate list items, for example:
{
"foo": [ 1.0, 1.1 ]
"foo_1": [ 1.2 ]
}
Blueprint information
- Status:
- Complete
- Approver:
- Richard Jones
- Priority:
- High
- Drafter:
- Rob Cresswell
- Direction:
- Approved
- Assignee:
- None
- Definition:
- Approved
- Series goal:
- Accepted for 12.0.0-pike
- Implementation:
- Implemented
- Milestone target:
- pike-1
- Started by
- Rob Cresswell
- Completed by
- Rob Cresswell
Related branches
Related bugs
Sprints
Whiteboard
Gerrit topic: https:/
Addressed by: https:/
WIP - Add cinder group types to Admin volume panel
Gerrit topic: https:/
Addressed by: https:/
Add microversion support for consistency groups
Gerrit topic: https:/
Addressed by: https:/
Add Microversion support to Horizon