<html><head><meta http-equiv="Content-Type" content="text/html charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class="">Konstantin,<div class=""><br class=""></div><div class="">thank you for your ideas, I think we will definitely want to use something like that. Lets discuss some nits in the etherpad you’ve created.</div><div class=""><br class=""></div><div class=""><br class=""></div><div class="">- romcheg<br class=""><div><blockquote type="cite" class=""><div class="">16 січ. 2015 о 13:03 Konstantin Danilov <<a href="mailto:kdanilov@mirantis.com" class="">kdanilov@mirantis.com</a>> написав(ла):</div><br class="Apple-interchange-newline"><div class=""><div dir="ltr" style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class="">Hi all,<div class=""><br class=""></div><div class="">I have created etherpad page</div><div class=""><br class=""></div><div class=""><a href="https://etherpad.openstack.org/p/fuelclient-implementation-ideas" class="">https://etherpad.openstack.org/p/fuelclient-implementation-ideas</a></div><div class=""><br class=""></div><div class=""><br class=""><div class="gmail_extra"><br class=""><div class="gmail_quote">On Wed, Jan 14, 2015 at 12:38 PM, Konstantin Danilov<span class="Apple-converted-space"> </span><span dir="ltr" class=""><<a href="mailto:kdanilov@mirantis.com" target="_blank" class="">kdanilov@mirantis.com</a>></span><span class="Apple-converted-space"> </span>wrote:<br class=""><blockquote class="gmail_quote" style="margin: 0px 0px 0px 0.8ex; border-left-width: 1px; border-left-color: rgb(204, 204, 204); border-left-style: solid; padding-left: 1ex;"><div dir="ltr" class=""><div class="">Igor,<span class="Apple-converted-space"> </span><br class=""><br class=""></div>Yep, I knew that you start to rewrite fuel-client, but it seemd for me that this ideas is not for<span class="Apple-converted-space"> </span><br class=""><a href="https://etherpad.openstack.org/p/fuelclient-redesign" target="_blank" class="">https://etherpad.openstack.org/p/fuelclient-redesign</a><span class="Apple-converted-space"> </span>document because it's<br class="">implementation details. Should I create a new notepad for it?<br class=""></div><div class=""><div class="h5"><div class="gmail_extra"><br class=""><div class="gmail_quote">On Wed, Jan 14, 2015 at 11:58 AM, Igor Kalnitsky<span class="Apple-converted-space"> </span><span dir="ltr" class=""><<a href="mailto:ikalnitsky@mirantis.com" target="_blank" class="">ikalnitsky@mirantis.com</a>></span><span class="Apple-converted-space"> </span>wrote:<br class=""><blockquote class="gmail_quote" style="margin: 0px 0px 0px 0.8ex; border-left-width: 1px; border-left-color: rgb(204, 204, 204); border-left-style: solid; padding-left: 1ex;">Hi, Konstantin,<br class=""><br class="">Thank you for sharing ideas. Your "yet-one-more implementation of<br class="">fuel-client" one more time confirms that currently we have completely<br class="">unusable implementation.<br class=""><br class="">Just for your information: we have plans for python-fuelclient<br class="">refactoring [1]. The main point of this blueprint is to provide<br class="">fuelclient which will be useful as both: library and cli. Please, do<br class="">not hesitate share your ideas in blueprint or in the working ehterpad<br class="">[2].<br class=""><br class="">- Igor<br class=""><br class="">[1]:<span class="Apple-converted-space"> </span><a href="https://review.openstack.org/#/c/135915/" target="_blank" class="">https://review.openstack.org/#/c/135915/</a><br class="">[2]:<span class="Apple-converted-space"> </span><a href="https://etherpad.openstack.org/p/fuelclient-redesign" target="_blank" class="">https://etherpad.openstack.org/p/fuelclient-redesign</a><br class=""><div class=""><div class=""><br class="">On Wed, Jan 14, 2015 at 12:38 PM, Konstantin Danilov<br class=""><<a href="mailto:kdanilov@mirantis.com" target="_blank" class="">kdanilov@mirantis.com</a>> wrote:<br class="">> Hi all,<br class="">><br class="">> We are working on fuel certification script<br class="">><span class="Apple-converted-space"> </span><a href="https://github.com/stgleb/fuel-web" target="_blank" class="">https://github.com/stgleb/fuel-web</a><br class="">> and have yet-one-more implementation of fuel-client, which cover very small<br class="">> of Fuel API, yet we have some ideas, which you might be interesting in.<br class="">><br class="">> 1) high-level primitives for REST operations.<br class="">><br class="">>     a) GET/PUT/POST/etc function, which returns closure, bonded to url and<br class="">> method<br class="">><br class="">><br class="">>         class Cluster(RestObj):<br class="">>             """Class represents Cluster in Fuel"""<br class="">><br class="">>             add_node_call = PUT('api/nodes')<br class="">>             start_deploy = PUT('api/clusters/{id}/changes')<br class="">>             get_status = GET('api/clusters/{id}')<br class="">>             delete = DELETE('api/clusters/{id}')<br class="">><br class="">>         GET(url_template) returns function/class method, which accepts set<br class="">> of parameters,<br class="">>         format part of them into url_template to obtain final url and pass<br class="">> other parameters<br class="">>         as data in http request. E.g.<br class="">><br class="">>         get_some_objs = GET('some/objects/{cluster_id}/really_get')<br class="">><br class="">><br class="">>         get_some_objs(cluster_id=12, kind="db objects") will result in<br class="">>         HTTP request GET '..../some/objects/12/really_get' data =<br class="">> {'kind':'db objects'}<br class="">><br class="">>         in case of class method it also extracts missing format parameters<br class="">> from self.__dict__.<br class="">>         E.g.<br class="">><br class="">>         node = Node.get_all()[0]<br class="">>         nnode = node.get() <<< takes id from<span class="Apple-converted-space"> </span><a href="http://node.id/" target="_blank" class="">node.id</a><br class="">><br class="">><br class="">>     b) Auto generate API for strict restfull cases, e.g.<br class="">><br class="">>         class Node(RestfulObj):<br class="">>             """Represents node in Fuel"""<br class="">><br class="">>             __url__ = '/api/nodes/{id}'<br class="">><br class="">>         ==<br class="">><br class="">>         class Node(RestObj):<br class="">>             """Represents node in Fuel"""<br class="">><br class="">>             get_all = GET('/api/nodes')<br class="">>             get = GET('/api/nodes/{id}')<br class="">>             delete = DELETE('/api/nodes/{id}')<br class="">>             create = POST('/api/nodes/{id}')<br class="">>             ....<br class="">><br class="">> 2) API for create cluster from yaml description. Allow to deploy whole<br class="">> openstack cluster from single yaml file. We being asking a lot whenever this<br class="">> call would be available in fuel client<br class="">> by different team/persons.<br class="">><br class="">><span class="Apple-converted-space"> </span><a href="https://github.com/stgleb/fuel-web/blob/sertification-script/certification_script/certification_script/cert_script.py#L165" target="_blank" class="">https://github.com/stgleb/fuel-web/blob/sertification-script/certification_script/certification_script/cert_script.py#L165</a><br class="">><br class="">> 3) I have a semi-implemented ideas for future-based API for background tasks<br class="">> (e.g. cluster deployment)<br class="">><br class="">> Code is available in repo and we would be glad to help you to merge it to<br class="">> new fuel-client<br class="">><br class="">> --<br class="">> Kostiantyn Danilov aka<span class="Apple-converted-space"> </span><a href="http://koder.ua/" target="_blank" class="">koder.ua</a><br class="">> Principal software engineer, Mirantis<br class="">><br class="">> skype:<a href="http://koder.ua/" target="_blank" class="">koder.ua</a><br class="">><span class="Apple-converted-space"> </span><a href="http://koder-ua.blogspot.com/" target="_blank" class="">http://koder-ua.blogspot.com/</a><br class="">><span class="Apple-converted-space"> </span><a href="http://mirantis.com/" target="_blank" class="">http://mirantis.com</a><br class="">><br class=""></div></div>> __________________________________________________________________________<br class="">> OpenStack Development Mailing List (not for usage questions)<br class="">> Unsubscribe:<span class="Apple-converted-space"> </span><a href="http://OpenStack-dev-request@lists.openstack.org/?subject:unsubscribe" target="_blank" class="">OpenStack-dev-request@lists.openstack.org?subject:unsubscribe</a><br class="">><span class="Apple-converted-space"> </span><a href="http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev" target="_blank" class="">http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev</a><br class="">><br class=""><br class="">__________________________________________________________________________<br class="">OpenStack Development Mailing List (not for usage questions)<br class="">Unsubscribe:<span class="Apple-converted-space"> </span><a href="http://OpenStack-dev-request@lists.openstack.org/?subject:unsubscribe" target="_blank" class="">OpenStack-dev-request@lists.openstack.org?subject:unsubscribe</a><br class=""><a href="http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev" target="_blank" class="">http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev</a><br class=""></blockquote></div><br class=""><br clear="all" class=""><br class="">--<span class="Apple-converted-space"> </span><br class=""><div class="">Kostiantyn Danilov aka<span class="Apple-converted-space"> </span><a href="http://koder.ua/" target="_blank" class="">koder.ua</a><br class="">Principal software engineer, Mirantis<br class=""><br class="">skype:<a href="http://koder.ua/" target="_blank" class="">koder.ua</a><br class=""><a href="http://koder-ua.blogspot.com/" target="_blank" class="">http://koder-ua.blogspot.com/</a><br class=""><a href="http://mirantis.com/" target="_blank" class="">http://mirantis.com</a></div></div></div></div></blockquote></div><br class=""><br clear="all" class=""><div class=""><br class=""></div>--<span class="Apple-converted-space"> </span><br class=""><div class="gmail_signature">Kostiantyn Danilov aka<span class="Apple-converted-space"> </span><a href="http://koder.ua/" target="_blank" class="">koder.ua</a><br class="">Principal software engineer, Mirantis<br class=""><br class="">skype:<a href="http://koder.ua/" target="_blank" class="">koder.ua</a><br class=""><a href="http://koder-ua.blogspot.com/" target="_blank" class="">http://koder-ua.blogspot.com/</a><br class=""><a href="http://mirantis.com/" target="_blank" class="">http://mirantis.com</a></div></div></div></div><span style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; float: none; display: inline !important;" class="">__________________________________________________________________________</span><br style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""><span style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; float: none; display: inline !important;" class="">OpenStack Development Mailing List (not for usage questions)</span><br style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""><span style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; float: none; display: inline !important;" class="">Unsubscribe:<span class="Apple-converted-space"> </span></span><a href="mailto:OpenStack-dev-request@lists.openstack.org" style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class="">OpenStack-dev-request@lists.openstack.org</a><span style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; float: none; display: inline !important;" class="">?subject:unsubscribe</span><br style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""><a href="http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev" style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class="">http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev</a></div></blockquote></div><br class=""></div></body></html>