Bug 1041854 - [RFE][python-keystoneclient]: Support plugin style CRUD Managers
Summary: [RFE][python-keystoneclient]: Support plugin style CRUD Managers
Keywords:
Status: CLOSED UPSTREAM
Alias: None
Product: Red Hat OpenStack
Classification: Red Hat
Component: RFEs
Version: unspecified
Hardware: Unspecified
OS: Unspecified
unspecified
unspecified
Target Milestone: ---
: ---
Assignee: RHOS Maint
QA Contact:
URL: https://blueprints.launchpad.net/pyth...
Whiteboard: upstream_milestone_none upstream_stat...
Depends On:
Blocks:
TreeView+ depends on / blocked
 
Reported: 2013-12-12 19:43 UTC by RHOS Integration
Modified: 2015-03-19 17:06 UTC (History)
2 users (show)

Fixed In Version:
Doc Type: Enhancement
Doc Text:
Clone Of:
Environment:
Last Closed: 2015-03-19 17:06:25 UTC
Target Upstream Version:


Attachments (Terms of Use)

Description RHOS Integration 2013-12-12 19:43:26 UTC
Cloned from launchpad blueprint https://blueprints.launchpad.net/python-keystoneclient/+spec/plugin-style-crud-managers.

Description:

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.

Specification URL (additional information):

None


Note You need to log in before you can comment on or make changes to this bug.