Firstly, i think it's _awesome_ that you're hacking with our code! Thanks for sharing a pointer to your fork!
How would you feel about integrating this kind of thing into the scheduler rather than a separate webapp? I'd be happy to help acquaint you with the scheduler code if that presents a hurdle. -=Bill On Tue, Apr 22, 2014 at 2:04 PM, Madan, Smarth <sma...@paypal.com> wrote: > Hi Bill, > > I created a REST client for scheduling jobs on Aurora. It uses the > Thrift generated java and connects to the Aurora Scheduler server skipping > the Python client. I also built a simple UI on top of it. Currently I am > testing the UI. My code is in my repository forked from the original Aurura > repo : https://github.com/smarth-madan/incubator-aurora . I think it > would be a useful tool to schedule jobs using a simple UI and let people > try it out easily. > I could raise a pull request once I am done testing for the same. Please > let me know your suggestions. > > Thanks > Smarth Madan > > From: Bill Farner <wfar...@apache.org> > Date: Thursday, March 27, 2014 at 12:34 PM > To: "dev@aurora.incubator.apache.org" <dev@aurora.incubator.apache.org> > Cc: "Madan, Smarth" <sma...@paypal.com> > Subject: Re: Aurora Client over HTTP/JSON > > Hi Smarth! > > This is out of scope of AURORA-20. That ticket tracks creating a guide for > new developers on the client. However, i'm not opposed to the feature you > propose. > > The client currently speaks HTTP/JSON. If you invoke ./gradlew run, you > might notice these API calls when you view some of the pages on the scheduler > web interface. Chrome developer tools makes it easy to convert these calls > into curl commands. Here's one stripped down: > > $ curl 'http://localhost:8081/api' --data-binary '[1,"getRoleSummary",1,0,{}]' > [1,"getRoleSummary",2,0,{"0":{"rec":{"1":{"i32":1},"3":{"rec":{"17":{"rec":{"1":{"set":["rec",1,{"1":{"str":"mesos"},"2":{"i32":40},"3":{"i32":20}}]}}}}},"4":{"rec":{"1":{"i32":3}}},"5":{"rec":{"1":{"str":"local"},"2":{"i32":3}}}}}}] > > This is invoking methods on the thrift API [1], and results are encoded using > TJSONProtocol (configured in SchedulerAPIServlet [2]). You'll notice from > the output above that TJSONProtocol encodes fields with their numeric field > IDs, as specified in api.thrift. This is a fundamental characteristic of > IDLs like thrift and protobuf - field IDs rather than names are transmitted > over the wire. Obviously, this is somewhat at odds with the traditional > HTTP/JSON approach. > > I see three obvious paths forward, some of which might not suit your needs: > > - use a part of our client as a python API from your tooling > > - use thrift-compiled code in your tooling > > - augment the scheduler to have separate endpoints that expose fields by name > rather than numeric ID. there may be prior art for this, but otherwise would > look something like SchedulerAPIServlet along with a different > TProtocolFactory [3]. > > Hope that helps! Cheers! > > > -=Bill > > > [1] > https://github.com/apache/incubator-aurora/blob/master/src/main/thrift/org/apache/aurora/gen/api.thrift#L496-531 > [2] > https://github.com/apache/incubator-aurora/blob/master/src/main/java/org/apache/aurora/scheduler/thrift/SchedulerAPIServlet.java > [3] > http://people.apache.org/~thejas/thrift-0.9/javadoc/org/apache/thrift/protocol/TProtocolFactory.html >