← Back to team overview

openstack team mailing list archive

Re: Common openstack client library

 

Did you see:

https://github.com/openstack/python-openstackclient

Also, keep in mind that some of the ways the existing Glance client (and Swift client FTM) work is due to lack of support in httplib2 for chunked-transfer encoding.

Best,
-jay

On 06/19/2012 12:43 PM, Alexey Ababilov wrote:
Hi!

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.

Here is an example of using unified clients.

from openstackclient_base import patch_clients
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()



_______________________________________________
Mailing list: https://launchpad.net/~openstack
Post to     : openstack@xxxxxxxxxxxxxxxxxxx
Unsubscribe : https://launchpad.net/~openstack
More help   : https://help.launchpad.net/ListHelp


References