This probably needs of lot of discussion. For now, I'll stick to basics and
concentrate more on the UI. Thanks for the help.

Regards,
Shiva Teja.


On Mon, Apr 29, 2013 at 10:45 AM, Rohit Yadav <bhais...@apache.org> wrote:

> On Mon, Apr 29, 2013 at 1:53 AM, Shiva Teja <shivate...@gmail.com> wrote:
>
> > Hi Rohit,
> >
> > I think you made my work a lot easier :) I can use code from cloudmonkey
> to
> > generate API cache and then build the code for the wrapper using it.
> >
> > I might need some information on this. How would a RESTful CloudStack API
> > look like ?
>
>
> This is a hard issue because the challenge is not just to implement
> something, but something that will be maintainable. Your APIs are your
> interface or contract to the outside world so once you give away your spec
> to the outside world, you've the burden to keep backward compatibility and
> not mess up when you do any kind of refactoring.
>
> Some general rules I see are; all entities are nouns, the verbs are not
> part of the url but how you call them; so list/read would be GET, create
> would be POST, update would be PUT, remove/del would be DELETE... that said
> you can create your own X- headers to mean something. People have written
> books, gave talk on how to write good RESTful APIs.
>
>
> > If I get these basic rules, I am guessing it shouldn't be tough
> > to generate the wrapper.
> >
>
> The implementation won't be tough, but getting it right would be. Right now
> I'm just splitting the apiname at the camelCase's hump in cloudmonkey, so
> camel becomes a command and Case becomes the entity.
>
>
> >
> > Here's a very basic idea. I am using the same terminology used in
> > cloudmonkey. In "listUsers", users is subject and list is the verb.
> > In most of the cases the URL for an API command can be something like
> > "baseurl/subject/verb" with an appropriately chosen HTTP method based on
> > the verb. For some "verbs" like list, get, update, delete, add, it
> doesn't
> > make sense to have them in the URL and using the appropriate HTTP method
> > would mean the same. So I'll have to write the rules for each verb. These
> > rules might contain method to be used for the verb, should the verb be in
> > the URL or not...etc. And use these rules to generate the wrapper.
> >
>
> It's not straight forward, for example create/add/generate are few words in
> apis which would be GET Apis in restful terms. One way would be to manually
> sort/group the apis, other would be to annotate each api with an entity
> name, RESTful type {one of GET, POST, PUT etc.} and parent (For example,
> /zone/pod/cluster makes sense?).
>
>
> > I am trying to decide these rules, so that they don't deviate from the
> > point of being a RESTful API. Will get back with final implementation
> > details before I finish my application for GSoC.
> >
>
> Lastly, talk to Sebastien or someone who would is participating in GSoC as
> a mentor because it's important to identify who would mentor you if they
> would, best of luck.
>
> Cheers.
> I'm skipping applying to being a GSoC mentor this year, pissed off from
> GSoC admins this year. FOSS is just going to dogs; fck they did not include
> one project that has no real company to back its development and really
> needs help; VideoLAN/VLC.
>
>
>
> > Regard,
> > Shiva Teja(irc: teja)
> >
> >
> > On Sat, Apr 27, 2013 at 10:14 PM, Rohit Yadav <bhais...@apache.org>
> wrote:
> >
> > > Hi Shiva,
> > >
> > > On Sat, Apr 27, 2013 at 1:29 AM, Shiva Teja <shivate...@gmail.com>
> > wrote:
> > >
> > > > Hi all,
> > > >
> > > > I am Shiva Teja, an undergrad student from IIT Mandi, India. I will
> be
> > > > participating in GSoC this year. I'd like to work on the new
> CloudStack
> > > UI
> > > > with bootstrap project[1]. I've been experimenting with API for the
> > past
> > > > few days. After reading a couple of blog posts by Sebastien, his
> recent
> > > > hack on this[2] and a recent discussion[3] on the mailing list about
> > > making
> > > > CloudStack API RESTfull, here are the things I plan to do.
> > > >
> > >
> > > Have you started working on your plan or just proposing? Hope you have
> a
> > > setup and tried CloudStack on DevCloud. For starters I suggest you to
> > > download, build and deploy CloudStack, play around APIs, cloudmonkey (a
> > > CLI) and the API Discovery service because both of your idea proposals
> > are
> > > around APIs.
> > >
> > > 1. A more "human", RESTfull wrapper API on top of CloudStack API using
> > > > Flask python framework. Something like "GET /users" will directly
> > > > correspond to "listUsers" API command. "DELETE /user/<id>" will
> > > correspond
> > > > to the respective "deleteUser" API call.
> > > >
> > >
> > > It's tricky, first you should get a full list of entities. It's a lot
> of
> > > hard work if you do it manually but you can do smartly if you use Api
> > > Discovery. There are more than 300+ APIs in CloudStack, now groupped as
> > per
> > > entities (see a package like org.apache.cloudstack.api.<entitiy>.<api
> cmd
> > > class>).
> > >
> > > So, first you need to classify the entities, get it checked (like write
> > > tests) and then define these operations. Few of us are inclined towards
> > > rewriting an API server that is RESTful and not query based. The
> > challenge
> > > there is to reuse present cmd classes, one way is to use reflections
> and
> > > another round of api annotations refactoring. Easiest way would be to
> > just
> > > fix/add/reuse Api Discovery, or write something use metaprogamming that
> > > auto generates your wrapper.
> > >
> > > I'm floating these ideas so you can think about it and come up with a
> > > strategy that creates maintainable, extendable code which would require
> > > less time to implement it.
> > >
> > > 2. A complete UI designed using Twitter Bootstrap and Backbone.js.
> > > > Obviously this will use the API that I'll be making.
> > > >
> > >
> > > +1 This is a fantastic idea, a better, faster, modular UI that is
> > > responsive is much appreciated and we will have an alternative to the
> > > default one.
> > >
> > > Avoid sending direct emails to anyone and feel free to reach out to the
> > dev
> > > ML, email like a boss™.
> > >
> > > Happy hacking!
> > >
> > > Cheers.
> > >
> > > (An app made using Bootstrap and Backbone.js:
> > > > http://coenraets.org/directory/ )
> > > >
> > > > Any suggestions/comments ?
> > > >
> > > > [1] https://issues.apache.org/jira/browse/CLOUDSTACK-1778
> > > > [2] https://github.com/runseb/cloudstack-flask
> > > > [3]
> > > >
> > > >
> > >
> >
> http://mail-archives.apache.org/mod_mbox/cloudstack-dev/201304.mbox/%3C20130424083847.GA11354%40cloud-2.local%3E
> > > >
> > > > Thanks,
> > > > Shiva Teja.
> > > >
> > >
> >
>

Reply via email to