# https://sequencediagram.org/
title Puppet Agent flow today

actor User
participant Puppet Agent
participant #blue Puppetserver
participant #blue node.rb
participant #blue report.rb

participant Foreman

User->Puppet Agent: apply
activate Puppet Agent
Puppet Agent->Puppetserver: Retrieve catalog

Puppetserver->node.rb: Invoke
activate node.rb
note over node.rb: Read facts from cache
node.rb->Foreman: POST /api/hosts/facts
activate Foreman
node.rb<--Foreman: HTTP 201
deactivate Foreman
node.rb->Foreman: GET /node/:certname
activate Foreman
node.rb<--Foreman: ENC
deactivate Foreman
Puppetserver<--node.rb: ENC
deactivate node.rb
Puppet Agent<--Puppetserver: Catalog
Puppet Agent->Puppetserver: Send report
Puppetserver->report.rb: Invoke
activate report.rb
report.rb->Foreman: POST /api/config_reports
report.rb<--Foreman: HTTP 201
deactivate report.rb
