Board Farm REST API

= Introduction = In Fall of 2020, TimeSys and Sony proposed a "board farm REST API" for managing boards in a lab.

From the project README:

"This project proposes standard APIs between automated tests and board farm management software. The idea is to allow a test to query the farm about available bus connections, attached hardware and measurement devices, and other test installation infrastructure. The test can then allocate and use that hardware, in a lab-independent fashion. The proposal calls for a dual REST/command-line API, with support for discovery, control and operation of hardware and network resources. It is hoped that establishing a standard in this area will allow for the creation of an ecosystem of shareable hardware tests and board farm software."

= Resources = Here is some information about the project:
 * git repository: https://github.com/TimesysGit/board-farm-rest-api
 * mailing list: under construction (use automated-testing list, or direct author contact for now)

= Status = In October, 2020, Harish Bansal of TimeSys and Tim Bird of Sony gave a presentation about the API at Embedded Linux Conference Europe, 2020.

At that time, the following had been accomplished and demonstrated:
 * the API had been added to TimeSys' board farm server (https://bfc.timesys.com)
 * a command line tool called 'ebf' had been developed
 * support for ebf was added to the Fuego test framework
 * a test was developed which used the API to executed a test in a lab-independent fashion
 * the test had been executed on a board in the TimeSys board farm from a LAVA system and a Fuego system

= Presentations =
 * [upload presentation and put link here]
 * [add link to video here when it is available]

= Project activity = TimeSys and Sony have been having regular teleconferences to coordinate work on the API. If you would like to join those teleconferences, please let Harish or Tim know.

To Do list

 * Someone to create mailing list
 * Someone to finish openapi documents for spec directory in git repository
 * Tim to finish initial LabControl implementation

Stuff that nedds to be done

 * Need to finish Fuego integration
 * Add 'ebf' installation to Dockerfile (curl and jq already added)
 * Need to resolve issue with transferring multiple files with a single upload command
 * Fuego uses put -r
 * Maybe just add tar, upload, untar operations into the ttc copy_to_cmd? (Fuego never downloads multiple files)
 * Maybe move API integration into Fuego overlay layer
 * Finalize gpio API, to allow for asking the LAB for the other endpoint GPIO number
 * Resolve bugs and issues with ebf
 * Set up an issue tracker for the project? (maybe just use github's?)
 * Define APIs for more lab hardware
 * power measurement
 * audio/video capture
 * netperf server management
 * Start righting tests that use the API
 * Decide on parts of TimeSys implementation to upstream to LAVA