Skip to content

Instantly share code, notes, and snippets.

@bmbouter
Last active December 13, 2018 21:56
Show Gist options
  • Save bmbouter/f9e7ed5b03efd5e52cf29ba78f3b25c1 to your computer and use it in GitHub Desktop.
Save bmbouter/f9e7ed5b03efd5e52cf29ba78f3b25c1 to your computer and use it in GitHub Desktop.
@startuml
autonumber
title Lazy Call Flow Sequence Diagram
participant Client
box "Pulp Core Services (pulp.yourdomain.com)"
participant "Pulp Content App"
participant PostgreSQL
end box
participant "example.org"
== No PublishedArtifact, No PublishedMetadata, pass_through=False, policy='streamed' ==
autonumber
' Request content
Client [#red]-> "Pulp Content App" : GET /pulp/content/zoo/pig.rpm
activate "Pulp Content App"
' Check the database for the the Distribution
"Pulp Content App" [#cyan]-> PostgreSQL : Query for the Distribution serving /pulp/content/zoo/pig.rpm
"Pulp Content App" <-[#cyan] PostgreSQL : Distribution base_path='zoo' Found
||45||
' Check for PublishedArtifact or PublishedMetadata associated with that Distribution's Publication
"Pulp Content App" [#cyan]-> PostgreSQL : Query for PublishedArtifact or PublishedMetadata associated with the Distribution's Publication
"Pulp Content App" <-[#cyan] PostgreSQL : PublishedArtifact or PublishedMetadata found
||45||
' See if pass_through=True and if so query for an Artifact
"Pulp Content App" [#cyan]-> PostgreSQL : Query for an Artifact in the RepoVersion with relative_path='pig.rpm'
"Pulp Content App" <-[#cyan] PostgreSQL : Artifact Not Found
||45||
' Find a RemoteArtifact for 'pig.rpm' and its Remotes
"Pulp Content App" [#cyan]-> PostgreSQL : Query for RemoteArtifact for 'pig.rpm' and its Remotes
"Pulp Content App" <-[#cyan] PostgreSQL : RemoteArtifact for 'pig.rpm' and its Remotes Found
||45||
' Download Content From Remote
"Pulp Content App" [#green]-> "example.org" : GET /path/to/repo/pig.rpm
"Pulp Content App" <-[#green] "example.org" : 200 OK + binary data
'Return 404
Client <-[#red] "Pulp Content App" : 200 OK + binary data
deactivate "Pulp Content App"
== No PublishedArtifact, No PublishedMetadata, pass_through=False, policy='streamed' ==
== No PublishedArtifact, No PublishedMetadata, pass_through=False, policy='on_demand' ==
autonumber
' Request content
Client [#red]-> "Pulp Content App" : GET /pulp/content/zoo/pig.rpm
activate "Pulp Content App"
' Check the database for the the Distribution
"Pulp Content App" [#cyan]-> PostgreSQL : Query for the Distribution serving /pulp/content/zoo/pig.rpm
"Pulp Content App" <-[#cyan] PostgreSQL : Distribution base_path='zoo' Found
||45||
' Check for PublishedArtifact or PublishedMetadata associated with that Distribution's Publication
"Pulp Content App" [#cyan]-> PostgreSQL : Query for PublishedArtifact or PublishedMetadata associated with the Distribution's Publication
"Pulp Content App" <-[#cyan] PostgreSQL : PublishedArtifact or PublishedMetadata found
||45||
' See if pass_through=True and if so query for an Artifact
"Pulp Content App" [#cyan]-> PostgreSQL : Query for an Artifact in the RepoVersion with relative_path='pig.rpm'
"Pulp Content App" <-[#cyan] PostgreSQL : Artifact Not Found
||45||
' Find a RemoteArtifact for 'pig.rpm' and its Remotes
"Pulp Content App" [#cyan]-> PostgreSQL : Query for RemoteArtifact for 'pig.rpm' and its Remotes
"Pulp Content App" <-[#cyan] PostgreSQL : RemoteArtifact for 'pig.rpm' and its Remotes Found
||45||
' Download Content From Remote
"Pulp Content App" [#green]-> "example.org" : GET /path/to/repo/pig.rpm
"Pulp Content App" <-[#green] "example.org" : 200 OK + binary data
||45||
' Save the Artifact for 'pig.rpm' and associate it with the RemoteArtifact
"Pulp Content App" [#cyan]-> PostgreSQL : Save the Artifact for 'pig.rpm' and associate it with the RemoteArtifact
'Return 404
Client <-[#red] "Pulp Content App" : 200 OK + binary data
deactivate "Pulp Content App"
== No PublishedArtifact, No PublishedMetadata, pass_through=False, policy='on_demand' ==
legend right
(Green) -> Downloader configured from the Remote's settings
(Cyan) -> Database calls
(Red) -> HTTP(S) calls
endlegend
@enduml
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment