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

Reply via email to