Multi-clustering with Go, DRMAA2, and Grid Engine (2014-12-22)

The cluster monitoring and job submission API based on the DRMAA2 standard makes it easy to build cluster monitoring and job workflow submission applications. Univa Grid Engine supports this open standard since version 8.2.

Doing cluster monitoring is straight forward, all neccessary calls for listing (including filtering) jobs, queues, and hosts are available. Also job submission is easy and is well defined and documented.

But what when you have multiple clusters and you want to have access to all of them without constantly switching the environment (or even logging in to different hosts)?

Fortunatly the Go progamming language makes it incredible easy to build proxies for such cases. With just one line of code using the standard library you can encode and decode data structures from and to text representations, like XML or JSON. Another line of code sets up a web-server. So, going this route I ended up with a simple proxy which provides some DRMAA2 functionality for Grid Engine clusters accessible by another simple command line tool, I called uc. The whole implementation is based on my Go DRMAA2 API

If you are interested in this project, you can find it in my github repository (certainly lots of potential for improvements...;-)):

https://github.com/dgruber/ubercluster