OpenStack Common Client Library part 2

Registered by Alexei Kornienko

This is a continuation of work related to unification of all openstack clients.

Goal of the blueprint is to move all common code to oslo library and reuse it in concrete clients.
Please see previous blueprint for more details

Blueprint information

Status:
Started
Approver:
Doug Hellmann
Priority:
Medium
Drafter:
Alexei Kornienko
Direction:
Approved
Assignee:
Alexei Kornienko
Definition:
Approved
Series goal:
None
Implementation:
Started
Milestone target:
milestone icon ongoing
Started by
Alexei Kornienko

Related branches

Sprints

Whiteboard

Gerrit topic: https://review.openstack.org/#q,topic:bp/common-client-library-2,n,z

Addressed by: https://review.openstack.org/62633
    Add to_dict() method to apiclient Resource()

Addressed by: https://review.openstack.org/63111
    Proceed 300 status code in common HTTPClient

Addressed by: https://review.openstack.org/65063
    Add common methods to cliutils

Addressed by: https://review.openstack.org/68105
    Deleted duplicated method in cliutils.

Addressed by: https://review.openstack.org/68963
    Fix response_key parameter usage in BaseManager

Gerrit topic: https://review.openstack.org/#q,topic:resource,n,z

Addressed by: https://review.openstack.org/69850
    Removed set_loaded() method from Resource class

Addressed by: https://review.openstack.org/70706
    Add __slots__ to Resource class

Addressed by: https://review.openstack.org/77653
    Adds {collection_,}response_key to CrudManager

(?)

Work Items

Work items:
move common shell utils to oslo: TODO
replace custom shell utils with oslo utils: TODO
Move common cli utils to oslo: DONE
Client shouldn't inherit HTTPClient in pythonclients: TODO
- ceilometerclient: DONE
- cinderclient: DONE
- ganttclient: TODO
- glanceclient: DONE
- heatclient: DONE
- ironicclient: DONE
- keystoneclient: POSTPONED
- marconiclient: TODO
- neutronclient: TODO
- novaclient: DONE
- savannaclient: TODO
- swiftclient: TODO
- troveclient: DONE
- tuskarclient: DONE
Sync module apiclient from oslo in pythonclients: TODO
- ceilometerclient: DONE
- [akurilin] cinderclient: INPROGRESS
- ganttclient: TODO
- glanceclient: DONE
- heatclient(apiclient.base and apiclient.exceptions already synced): TODO
- ironicclient: DONE
- keystoneclient: DONE
- marconiclient: TODO
- neutronclient: TODO
- novaclient: DONE
- savannaclient: DONE
- swiftclient: TODO
- troveclient: DONE
- tuskarclient: DONE
Reuse oslo clients exceptions in all clients: INPROGRESS
- ceilometerclient: TODO
- [ekudryashova] cinderclient: INPROGRESS
- ganttclient: TODO
- [ekudryashova] glanceclient: INPROGRESS
- heatclient: TODO
- [akurilin] ironicclient: DONE
- [akurilin] keystoneclient: DONE
- marconiclient: TODO
- neutronclient: TODO
- [akurilin] novaclient: DONE
- savannaclient: DONE
- swiftclient: TODO
- troveclient: INPROGRESS
- tuskarclient: DONE
Use cliutils from common code in: INPROGRESS
- [akurilin] keystoneclient: INPROGRESS
- ceilometerclient: TODO
- [akurilin ] ironicclient: INPROGRESS
- cinderclient: POSTPONED
- novaclient: INPROGRESS
- troveclient: INPROGRESS
- glanceclient: TODO
- heatclient: TODO
- ganttclient: TODO
- marconiclient: TODO
- neutronclient: TODO
- savannaclient: TODO
- swiftclient: TODO
- tuskarclient: TODO
Refactor CREATION_ATTRIBUTES in pythonclients: TODO
- ceilometerclient: TODO
- cinderclient: TODO
- ganttclient: TODO
- glanceclient: TODO
- heatclient: TODO
- ironicclient: TODO
- keystoneclient: TODO
- marconiclient: TODO
- neutronclient: TODO
- novaclient: TODO
- savannaclient: TODO
- swiftclient: TODO
- troveclient: TODO
- tuskarclient: TODO
Use common Oslo managers (BaseManager(), CrudManager(), ManagerWithFind()) in: TODO
- [ekudryashova]ceilometerclient: INPROGRESS
- cinderclient: TODO
- ganttclient: TODO
- [akurilin] glanceclient: DONE
- heatclient: DONE
- ironicclient: POSTPONED
- keystoneclient: POSTPONED
- marconiclient: TODO
- neutronclient: TODO
- novaclient: TODO
- savannaclient: TODO
- swiftclient: TODO
- troveclient: TODO
- tuskarclient: TODO
Write tests for troveclient.compat.cli: TODO
Write tests for troveclient.compat.mcli: TODO
Oslo shell completiotion framework: INPROGRESS
Move code from nova/hooks.py to oslo: DONE
Use Resource() from common code in: TODO
- glanceclient: DONE
- heatclient: DONE
- tuskarclient: DONE
- savannaclient: POSTPONED
- troveclient: INPROGRESS
- ceilometerclient: INPROGRESS
- ironicclient: DONE
- novaclient: DONE
- cinderclient: INPROGRESS
- keystoneclient: DONE
Use common HTTP Client in pythonclients: INPROGRESS
- ceilometerclient: INPROGRESS
- cinderclient: TODO
- ganttclient: TODO
- glanceclient: TODO
- heatclient: TODO
- ironicclient: INPROGRESS
- keystoneclient: TODO
- marconiclient: TODO
- neutronclient: TODO
- novaclient: TODO
- savannaclient: TODO
- swiftclient: TODO
- troveclient: INPROGRESS
- tuskarclient: DONE
Use to_dict() from common Resource() in clients: TODO
- tuskarclient: INPROGRESS
- [akurilin ] glanceclient: INPROGRESS
i18n support in apiclient: DONE

Dependency tree

* Blueprints in grey have been implemented.