Hi! I have an implementation of blueprint https://blueprints.launchpad.net/nova/+spec/basic-client-library. The library is accessible at https://github.com/aababilov/python-openstackclient -base.
This library is actively used in Grid Dynamics for two month and is quite stable. This library can be very useful for python-openstackclient (that started to build its own client wrapper) and nova server. Unfortunately, nova, keystone, and glance clients are very inconsistent. A lot of code is copied between all these clients instead of moving it to a common library. The code was edited without synchronization between clients, so, they have different behaviour: - all client constructors use different parameters (api_key in nova or password in keystone and so on); - keystoneclient authenticates immediately in __init__, while novaclient does in lazily during first method call; - {keystone,nova}client can manage service catalogs and accept keystone's auth URI while glanceclient allows endpoints only; - keystoneclient can support authorization with an unscoped token but novaclient doesn't; - novaclient uses class composition while keystoneclient uses inheritance. I have developed a library to unify current clients. The library can be used as-is, but it would be better if openstack clients dropped their common code (base.py, exceptions.py and so on) and just began to import common code. The library performs file chunking that is necessary for the glance client. Also, it performs reauthentication if the token is expired. Here is an example of using unified clients. from openstackclient_base.base import monkey_patch # optional monkey_patch() # optional from openstackclient_base.client import HttpClient http_client = HttpClient(username="...", password="...", tenant_name="...", auth_uri="...") from openstackclient_base.nova.client import ComputeClient print ComputeClient(http_client).servers.list() from openstackclient_base.keystone.client import IdentityPublicClient print IdentityPublicClient(http_client).tenants.list() -- Alessio Ababilov Software Engineer Grid Dynamics
_______________________________________________ Mailing list: https://launchpad.net/~openstack Post to : openstack@lists.launchpad.net Unsubscribe : https://launchpad.net/~openstack More help : https://help.launchpad.net/ListHelp