@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
!includeurl KubernetesPuml/OSS/KubernetesApi.puml
!includeurl KubernetesPuml/OSS/KubernetesPod.puml
!includeurl KubernetesPuml/OSS/KubernetesPv.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

Cluster_Boundary(cluster, "Kubernetes Cluster") {
    KubernetesApi(api, "Kubernetes Jobs API", "")

    frame pod as "Job Pod" {

        component staging as "pulsar" {
        }

        component tool as "biocontainer" {
        }

    }

}

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