[openstack-dev] [fuel][client] new client implementation ideas
Konstantin Danilov
kdanilov at mirantis.com
Fri Jan 16 12:03:49 UTC 2015
Hi all,
I have created etherpad page
https://etherpad.openstack.org/p/fuelclient-implementation-ideas
On Wed, Jan 14, 2015 at 12:38 PM, Konstantin Danilov <kdanilov at mirantis.com>
wrote:
> 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
>
--
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/20150116/0506732d/attachment.html>
More information about the OpenStack-dev
mailing list