[openstack-dev] [fuel][client] new client implementation ideas

Konstantin Danilov kdanilov at mirantis.com
Wed Jan 14 10:38:13 UTC 2015


Igor,

Yep, I knew that you start to rewrite fuel-client, but it seemd for me that
this ideas is not for
https://etherpad.openstack.org/p/fuelclient-redesign document because it's
implementation details. Should I create a new notepad for it?

On Wed, Jan 14, 2015 at 11:58 AM, Igor Kalnitsky <ikalnitsky at mirantis.com>
wrote:

> Hi, Konstantin,
>
> Thank you for sharing ideas. Your "yet-one-more implementation of
> fuel-client" one more time confirms that currently we have completely
> unusable implementation.
>
> Just for your information: we have plans for python-fuelclient
> refactoring [1]. The main point of this blueprint is to provide
> fuelclient which will be useful as both: library and cli. Please, do
> not hesitate share your ideas in blueprint or in the working ehterpad
> [2].
>
> - Igor
>
> [1]: https://review.openstack.org/#/c/135915/
> [2]: https://etherpad.openstack.org/p/fuelclient-redesign
>
> On Wed, Jan 14, 2015 at 12:38 PM, Konstantin Danilov
> <kdanilov at mirantis.com> wrote:
> > Hi all,
> >
> > We are working on fuel certification script
> > https://github.com/stgleb/fuel-web
> > and have yet-one-more implementation of fuel-client, which cover very
> small
> > of Fuel API, yet we have some ideas, which you might be interesting in.
> >
> > 1) high-level primitives for REST operations.
> >
> >     a) GET/PUT/POST/etc function, which returns closure, bonded to url
> and
> > method
> >
> >
> >         class Cluster(RestObj):
> >             """Class represents Cluster in Fuel"""
> >
> >             add_node_call = PUT('api/nodes')
> >             start_deploy = PUT('api/clusters/{id}/changes')
> >             get_status = GET('api/clusters/{id}')
> >             delete = DELETE('api/clusters/{id}')
> >
> >         GET(url_template) returns function/class method, which accepts
> set
> > of parameters,
> >         format part of them into url_template to obtain final url and
> pass
> > other parameters
> >         as data in http request. E.g.
> >
> >         get_some_objs = GET('some/objects/{cluster_id}/really_get')
> >
> >
> >         get_some_objs(cluster_id=12, kind="db objects") will result in
> >         HTTP request GET '..../some/objects/12/really_get' data =
> > {'kind':'db objects'}
> >
> >         in case of class method it also extracts missing format
> parameters
> > from self.__dict__.
> >         E.g.
> >
> >         node = Node.get_all()[0]
> >         nnode = node.get() <<< takes id from node.id
> >
> >
> >     b) Auto generate API for strict restfull cases, e.g.
> >
> >         class Node(RestfulObj):
> >             """Represents node in Fuel"""
> >
> >             __url__ = '/api/nodes/{id}'
> >
> >         ==
> >
> >         class Node(RestObj):
> >             """Represents node in Fuel"""
> >
> >             get_all = GET('/api/nodes')
> >             get = GET('/api/nodes/{id}')
> >             delete = DELETE('/api/nodes/{id}')
> >             create = POST('/api/nodes/{id}')
> >             ....
> >
> > 2) API for create cluster from yaml description. Allow to deploy whole
> > openstack cluster from single yaml file. We being asking a lot whenever
> this
> > call would be available in fuel client
> > by different team/persons.
> >
> >
> https://github.com/stgleb/fuel-web/blob/sertification-script/certification_script/certification_script/cert_script.py#L165
> >
> > 3) I have a semi-implemented ideas for future-based API for background
> tasks
> > (e.g. cluster deployment)
> >
> > Code is available in repo and we would be glad to help you to merge it to
> > new fuel-client
> >
> > --
> > Kostiantyn Danilov aka koder.ua
> > Principal software engineer, Mirantis
> >
> > skype:koder.ua
> > http://koder-ua.blogspot.com/
> > http://mirantis.com
> >
> >
> __________________________________________________________________________
> > OpenStack Development Mailing List (not for usage questions)
> > Unsubscribe:
> OpenStack-dev-request at lists.openstack.org?subject:unsubscribe
> > http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev
> >
>
> __________________________________________________________________________
> OpenStack Development Mailing List (not for usage questions)
> Unsubscribe: OpenStack-dev-request at lists.openstack.org?subject:unsubscribe
> http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev
>



-- 
Kostiantyn Danilov aka koder.ua
Principal software engineer, Mirantis

skype:koder.ua
http://koder-ua.blogspot.com/
http://mirantis.com
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.openstack.org/pipermail/openstack-dev/attachments/20150114/123c92a5/attachment.html>


More information about the OpenStack-dev mailing list