Hey James,
Thanks for sharing your thoughts on this.
On Wed, Apr 24, 2013 at 06:37:40PM +0100, James Tunnicliffe wrote:
Non-API related thought: I think it is reasonable to have an internal file server to store disk images on that we create during builds without having to push up to snapshots.linaro.org and pull them back down. It makes far more sense to boot and test an image, then optionally upload it to the wider world. Let me know if we have this soft of temporary storage available.
We don't have something like this, but we probably should have one.
I need to know if a machine is ready for me to use. I am happy to poll something.
I need to tell LAVA/CI that I have finished with a machine.
If I understand correctly your asumption is to receive a interactive session on the requested device(s), and then issue commands on it. Is that correct?
Maybe it's too late to ask this, but did you consider the possibility of having the CI runtime produce "actual" LAVA jobs (i.e. a target device spec + a non-interactive script), and then using an API to submit those jobs, poll for their completion (or block until completion depending on the use case) and acessing/manipulating/addressing the job results, perhaps to use them as input for other jobs?
This approach would have the advantage that since you don't directly control the device, you don't have the need to tell LAVA that you are finished with it. LAVA knows when the job you submited is done. Besides, if a CI job crashes, LAVA won't stay forever waiting for being told that a given device is done with, and doesn't need to care about handling timeouts, and we don't need to worry about what is the right timeout to wait for etc.
Does that make sense?
OTOH, I realize that having the ability to reserve a device and receive an interactive session on it is useful and would open up several other possibilities, so I don't necessarily think it is a bad idea at all.