Hi, here's what we talked about today in Brno. The goal is for the Foreman to be able to display the information that program X crashed on host Y at time Z. The workflow(bugflow?) will be as follows:
+---------+ +-----+ | foreman | | FAF | +---------+ +-----+ ^ ^ \ / \ / \ / \ / +-------------+ | smart proxy | +-------------+ ^ | | +------+ | host | +------+ 1) Whenever a crash happens on host, it sends the report to the smart proxy. The report is JSON formatted [1] and is sent through https connection which uses the Puppet certificate for client authentication. 2) The smart proxy receives the report, verifies the https connection against Puppet CA certificate and remembers the common name from the certificate in order to identify the host. 3) The smart proxy optionaly forwards the report to the ABRT server (a.k.a. FAF). 4) The smart proxy formats the report to the same format as Puppet uses and sends it to Foreman. It probably always shouldn't do so immediatelly as that could DOS the Foreman in case a lot of hosts will be sending crash reports very often. It should store the reports in memory and aggregate them according to the their identifier (a.k.a. hash). The hash can be computed by the satyr library [2]. 5) Foreman receives the report and displays it in some list, associated with the host it came from. TODO: - ABRT people will provide Ruby bindings for satyr - Foreman people will start working on the smart proxy support once their current sprint is over Please correct me if I got anything wrong or forgot something. Thanks! Martin [1] https://github.com/abrt/faf/wiki/uReport#ureport2 [2] https://github.com/abrt/satyr