Skip to content

Instantly share code, notes, and snippets.

@bmbouter
Last active October 23, 2015 19:35
Show Gist options
  • Select an option

  • Save bmbouter/2c8b4d8afd33876c655d to your computer and use it in GitHub Desktop.

Select an option

Save bmbouter/2c8b4d8afd33876c655d to your computer and use it in GitHub Desktop.
Pulp Asynchronous Request
@startuml
title Asynchronous Task Example (sync)
actor "API Client" as client
autonumber
client -> httpd: sync repo
httpd -> MongoDB: create TaskStatus record
httpd -> "resource_manager Queue" as rmQueue: dispatch Task to Resource Manager Queue
httpd -> client: TaskStatus info including UUID
...Wait for Messages to be handled FCFS by the Resource Manager (potential delay)...
rmQueue -> "pulp_resource_manager Process" as pulp_resource_manager: deliver message
pulp_resource_manager -> "worker1 dedicated Queue" as worker1_queue: dispatch message
...Wait for Messages to be handled FCFS by worker1 (potential delay)...
worker1_queue -> worker1: deliver message
worker1 -> MongoDB: marks TaskStatus as "Started"
activate worker1
worker1 -> MongoDB: updates progress as it happens
note right: perform sync
worker1 -> MongoDB: marks TaskStatus as "Finished"
deactivate worker1
== Asynchronous Polling from Client Anytime ==
autonumber 1
group TaskStatus Poll
client -> httpd: query for TaskStatus by UUID
httpd -> MongoDB: query for TaskStatus by UUID
MongoDB -> httpd: TaskStatus record
httpd -> client: TaskStatus info
end
@enduml
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment