@startuml
scale 600 height
!include skatt.iuml
skinparam  BackgroundColor white




database DockerRegistry

interface ExternalProvider

database KubernetesP<<kubernetes>> [
prod
]
database KubernetesU<<kubernetes>> [
utv
]

database KubernetesT<<kubernetes>> [
test
]

interface ExternalService

rectangle ImageChangeEventParser<<node>>
rectangle ResourceFetcher<<node>>
rectangle ResourceFilterer<<node>>

 database ImageChangeEvents<<sprocket>>
 database AffectedResources<<sprocket>>
 database ResourceQueue<<sprocket>>


ExternalProvider --> ImageChangeEventParser : 1. Send ImageChangeEvent
DockerRegistry --> ImageChangeEventParser : 1.Send audit events
ImageChangeEventParser -left-> ImageChangeEvents : 2. Store
ImageChangeEventParser -down-> ResourceFetcher : 3. fetch resources
ResourceFetcher --> KubernetesU : 4. fetch utv resources
ResourceFetcher --> KubernetesT : 4. fetch test resources
ResourceFetcher --> KubernetesP : 4. fetch prod resources
ResourceFetcher -left-> AffectedResources : 5. store
ResourceFetcher -right-> ResourceFilterer : 6. filter resources
ImageChangeEventParser -right-> ExternalService : 3. onImageChangeEvent webhook

ResourceFilterer --> ResourceQueue : 7. store

@enduml