Support plugin style CRUD Managers

Registered by Divyesh Khandeshi

Openstack keystone allows cloud providers to extend the base keystone through plugins and extensions. While these mechanisms allow providers to deploy customized keystone installations relatively easily without having to make changes to the core keystone code, the python-keystoneclient is less flexible in allowing for customizations that are needed for such customized keystone installations without changing the core python-keystoneclient code.

Essentially, the current python-keystoneclient consists of CRUD Managers with the CRUD operations that have hard-coded parameters which makes it difficult for a cloud provider to extend it in order to support their customized keystone installation thereby making it quite difficult to be used with it. (CRUD Managers here refer to the Managers that implement the CRUD operations on the various resources defined in Openstack keystone such as domain, tenant, user, etc. Each resource has a corresponding CRUD Manager corresponding to the version of the Openstack keystone API).

The issues with hard-coded parameters with CRUD Manager operations results in the following possibilities for extending the CRUD Manager operations that would allow for the python-keystoneclient to work with customized installations:

    Make changes to the CRUD Manager operations in the core client code.
    Enhance the core code to allow for specification of a alternative CRUD Managers that would support the customized operations and parameters.

The first approach is not a very practical approach, in that it would result in maintenance and merge nightmares whenever the customized client needs to pull in changes from the OpenStack core (upstream) python-keystoneclient which would result in long and risky merge issues. Even worse, the core client code could end up with customizations for a specific installation.

The second approach is much more maintainable, in that the core client CRUD Managers would never need to be modified and the customizations can reside completely independent of the core code. This would result in significant improvements in terms of maintainability of the code and also pulling and merging core code would not ever result in merge conflicts.

This proposal discusses the second approach which would vastly improve the client code in terms of maintainability and flexibility.

Blueprint information

Status:
Complete
Approver:
None
Priority:
Undefined
Drafter:
Divyesh Khandeshi
Direction:
Needs approval
Assignee:
Divyesh Khandeshi
Definition:
Obsolete
Series goal:
None
Implementation:
Unknown
Milestone target:
None
Completed by
Morgan Fainberg

Related branches

Sprints

Whiteboard

Gerrit topic: https://review.openstack.org/#q,topic:bp/plugin-style-crud-managers,n,z

Addressed by: https://review.openstack.org/55182 (abandoned)
    Add support for plugin-style crud managers

should this bp be abandoned?

(?)

Work Items

This blueprint contains Public information 
Everyone can see this information.

Subscribers

No subscribers.