Update Driver base objects for Keystone pluggable systems to use ABCMeta metaclass
The keystone driver classes (e.g. token, provider, assignment, identity, etc) should be updated to utilize the ABCMeta (abc module) metaclass.
The drivers should be actual abstract classes, since that is what they effectively are. This functionality is used in Neutron, Ironic, and Ceilometer. This will also help to push error discovery at class instantiation time instead of during a method call at some indeterminate time in the future. This also will allow base functionality to be implemented in the driver methods that can be called via super() but not break the method overriding requirement in subclasses.
PEP describing the use of ABCs
http://
This implementation should utilize six to be py3k compatible.
Example:
class AbstractBaseCla
@abc.
def abstract_
# we can do something here instead of raising
# NotImplemented()
return (int_arg + 1)
Blueprint information
- Status:
- Complete
- Approver:
- None
- Priority:
- Medium
- Drafter:
- None
- Direction:
- Needs approval
- Assignee:
- Doug Hellmann
- Definition:
- New
- Series goal:
- Accepted for icehouse
- Implementation:
-
Implemented
- Milestone target:
-
2014.1
- Started by
- Dolph Mathews
- Completed by
- Dolph Mathews
Related branches
Related bugs
Sprints
Whiteboard
Gerrit topic: https:/
Addressed by: https:/
Use abstract base class for identity driver
Gerrit topic: https:/
Addressed by: https:/
Use abstract base class for trust driver
Addressed by: https:/
Use abstract base class for assignment driver
Addressed by: https:/
Use abstract base class for credential driver
Addressed by: https:/
Use abstract base class for catalog driver
Addressed by: https:/
Use abstract base class for auth handler
Addressed by: https:/
Use abstract base class for token driver
Addressed by: https:/
Use abstract base class for policy driver
Addressed by: https:/
Use abstract base class for oauth driver
Addressed by: https:/
Use abstract base class for endpoint_filter driver
Addressed by: https:/
Remove obsolete driver test module
Addressed by: https:/
Allow use of rules Policy driver
Addressed by: https:/
Add ABCMeta metaclass to token provider