openstack team mailing list archive
-
openstack team
-
Mailing list archive
-
Message #13398
Re: Common openstack client library
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 <mordred@xxxxxxxxxxxx> 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@xxxxxxxxxxxxxxxxxxx
> > Unsubscribe : https://launchpad.net/~openstack
> > More help : https://help.launchpad.net/ListHelp
>
> _______________________________________________
> Mailing list: https://launchpad.net/~openstack
> Post to : openstack@xxxxxxxxxxxxxxxxxxx
> Unsubscribe : https://launchpad.net/~openstack
> More help : https://help.launchpad.net/ListHelp
>
--
Alessio Ababilov
Software Engineer
Grid Dynamics
References