<html><head></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; ">Alexey - <div><br></div><div>where's the library of common that you've put together? Is it committed to openstack-common? somewhere else?</div><div><br></div><div>-joe</div><div><br><div><div>On Jun 19, 2012, at 9:43 AM, Alexey Ababilov wrote:</div><blockquote type="cite"><p>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:</p>
<ul><li>all client constructors use different parameters (api_key in nova or
password in keystone and so on);</li><li>keystoneclient authenticates immediately in __init__, while novaclient does in lazily
during first method call;</li><li>{keystone,nova}client can manage service catalogs and accept keystone's auth URI while
glanceclient allows endpoints only;</li><li>keystoneclient can support authorization with an unscoped token but novaclient
doesn't;</li><li>novaclient uses class composition while keystoneclient uses inheritance.</li></ul>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.<br>
<br>Here is an example of using unified clients.<br><pre>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()</pre>
_______________________________________________<br>Mailing list: <a href="https://launchpad.net/~openstack">https://launchpad.net/~openstack</a><br>Post to     : <a href="mailto:openstack@lists.launchpad.net">openstack@lists.launchpad.net</a><br>Unsubscribe : <a href="https://launchpad.net/~openstack">https://launchpad.net/~openstack</a><br>More help   : <a href="https://help.launchpad.net/ListHelp">https://help.launchpad.net/ListHelp</a><br></blockquote></div><br></div></body></html>