Hi! The library is accessible at https://github.com/aababilov/python-openstackclient-base. I have update it so it doesn't require monkey patch for nova and keystone clients anymore.
I'm familiar with python-openstackclient<https://github.com/openstack/python-openstackclient>, and it will be an awesome tool. But it is a console client, and I am talking about an API client library. This library can be used by python-{nova,keystone,glance}client that are used, in their turn, by python-openstackclient <https://github.com/openstack/python-openstackclient>, horizon, etc. I used modified code from glance that does chunking manually. It's worth to mention that glance client can be simpler - it should not deal with chunkes anymore. Requred changes for glanceclient are accessible here: https://github.com/aababilov/python-glanceclient/commit/7b04a1672a4ba09281ea107c47a8b20d9a0c62bb . openstack-common seems to be a stub for a server and there is no client code, isn't it? Sincerely On Tue, Jun 19, 2012 at 8:14 PM, Monty Taylor <mord...@inaugust.com> wrote: > Hi! > > On 06/19/2012 09:43 AM, 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. > > There are two projects already in work focused on various aspects of > this. openstack-common is the place that we put code that should be > shared between the clients. python-openstackclient is a project that > aims at a single consistent interface. > > I'm thrilled that you have done some work in this area, but it would be > great if you could do this in the context of the two fairly official > projects that already exist. > > Thanks! > Monty > > > > 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@lists.launchpad.net > > Unsubscribe : https://launchpad.net/~openstack > > More help : https://help.launchpad.net/ListHelp > > _______________________________________________ > Mailing list: https://launchpad.net/~openstack > Post to : openstack@lists.launchpad.net > Unsubscribe : https://launchpad.net/~openstack > More help : https://help.launchpad.net/ListHelp > -- 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