Queue Sequence

This is a more detailed sequence illustrating the interaction between relayd and dispatcherd workers.

sequenceDiagram participant F as frontend (Drupal) participant R as relayd (Celery) participant M as Message Queue (RabbitMQ) participant D as dispatcherd (Celery) participant B as backend (Ansible) activate M activate F Note over F: Put task(s) on dispatcherd Queue F->>D: Run Operation (Admin UI) activate D deactivate F activate B D->>B: Execute provisioner (run_cmd) Note over B: Currently this is Ansible, but might be any executor loop Until provisioner exits D->>B: Poll for output B-->>D: Return latest output activate R D->>R: Post log task for relayd (post_log) activate F R->>F: Send output to Operation log (aegir:log) deactivate R deactivate F opt If needed activate R B->>D: Return feedback data (eg. backup location) D->>R: Post input task for relayd (relay_aegir_input) activate F R->>F: Input data back to Operations/Tasks (aegir:input) deactivate R deactivate F end end B->>D: Return exit code activate R D->>R: Post exitcode task for relayd (post_exitcode) activate F Note over F: This triggers an update to Operation status. R->>F: Send exitcode for Operation (aegir:exitcode) deactivate R deactivate F deactivate D deactivate B deactivate M