@startuml

!include plantuml_options.txt

!define KubernetesPuml https://raw.githubusercontent.com/dcasati/kubernetes-PlantUML/master/dist
!includeurl KubernetesPuml/kubernetes_Common.puml
!includeurl KubernetesPuml/kubernetes_Context.puml
!includeurl KubernetesPuml/kubernetes_Simplified.puml

component galaxy as "galaxy" {

}

note as galaxynote
    Use extended metadata to write
    results right from Pulsar and
    skip the need for RabbitMQ.
end note

galaxy ... galaxynote

storage disk as "Object Store" {

}

note as disknote
    Disk is unrestricted and does
    not need to be shared between
    Pulsar and Galaxy.
end note

disk ... disknote

cloud cluster as "GA4GH TES Cluster" {
    queue api as "GA4GH TES API" {
        
    }

    frame pod as "TesTask" {

        component stageout as "TesExecutor - pulsar stage-out" {
        }
        
        component tool as "TesExecutor - tool container" {
        }

        component stagein as "TesExecutor - pulsar stage-in" {
        }

        stagein <.. tool : depends on
        tool  <.. stageout : depends on

    }

}

galaxy --> disk
galaxy --> api : submit, cancel, status
api -[dashed]-> pod : [manages]
stagein --> disk : stage in
stageout --> disk : stage out
@enduml
