We are looking into replacing some homegrown pieces and the candidates are:
- anything mature in python
My colleague Kevin has looked into STAF so I am copy-pasting some of his findings.
STAF needs a daemon running on each machine and provides:
- communications protocol
- Remote process control ("Process" service)
- Sharing config data between master and slaves ("Variable" service)
- Cross-host file transfer ("Variable" service to register and look up, "File" service to transfer)
- Locking ("Semaphore" service)
- Logging, monitoring, and debugging ("Log", "Monitor", "Trace" services)
- bindings to many languages (see http://staf.sourceforge.net/current/STAFUG.htm), including python
Some advantages of using STAF:
- STAF is supported on wide variety of machines, including Windows, Linux, and Mac.
- We would replace a lot of low-level homegrown code with debugged, widely-used code maintained for free via open source.
- Updates to the STAF daemon ("STAFProc") should be rare since STAF is a mature product.
- It would be easy to write monitor tools that show what each build machine is doing via "process list" command.
Here are my questions, and I hope all the points get covered:
- Downsides to using STAF (e.g. very verbose)
- Any equivalent to STAF you would know about
- why equivalent would be better?
- communication / remote execution?
- cross-host file transfer?
- distributed locking / semaphores / IPC?
- logging and monitoring?
I am looking for equivalents that are mature and cover all/most/some features and would interact well together. I am trying to find out if there is better out there and if we can avoid using STAF (which means changing a lot of code to make it much more verbose / RPC oriented).