Erandi's work on adding a RESTful HTTP API will be a nice improvement for VXQuery. As we look at adding this code, I thought it would be good to clarify where this code should live and what is in the new maven project. Our current project hierarchy is shown in this diagram [1]. To keep minimize our code paths for executing a query, I suggest all queries be process through the RESTful HTTP API. For this to happen, both XTest and the CLI would need to be update to used the new REST API. In addition these projects would depend on the REST project. The REST project would be responsible for compiling and executing the query. [2] shows the new hierarchy.
To help conslidate code for creating a local cluster, the REST project will also include a class to start and stop a local cluster (similar to AsterixHyracksIntegrationUtil in AsterixDB). The XTest project has a local cluster for testing and the CLI has uses a local cluster when no cluster ip address was provided. These will now need to used the REST local cluster class and pass queries to the REST API for processing. The VXQuery Server project will operate similar the current method. Only now it will include a REST port and start the REST API with the Cluster Controller. I think this is a good direction, what are your thoughts? [1] https://docs.google.com/drawings/d/1XaVm97hO6L2cWRJfqVimXiC_RyPFw-gw9spw-8Lof5U/edit?usp=sharing [2] https://docs.google.com/drawings/d/16xyO3TW_9sqSAkFNcnlC4WzN4B3JBzYarQreQ_X438M/edit?usp=sharing
