@startuml participant "`pulumi import` Command" order 10 participant "PCL Converter" order 13 participant "Language Code Generator" order 16 box "Engine" participant "Import Driver" order 20 participant "Step Executor" order 25 end box participant "Resource Provider" order 30 "`pulumi import` Command" -> "Import Driver" ++ : engine.Import(import specs) "Import Driver" -> "Step Executor" --++ : []ImportStep(import spec) note left All steps run in parallel. end note "Step Executor" -> "Resource Provider" ++ : ReadRequest(type, id) "Step Executor" <- "Resource Provider" -- : ReadResponse(current inputs, current state) "Step Executor" -> "Resource Provider" ++ : CheckRequest(type, inputs, current inputs) "Step Executor" <- "Resource Provider" -- : CheckResponse(inputs', failures) "Step Executor" -> "Resource Provider" ++ : DiffRequest(type, inputs', current state, options) "Step Executor" <- "Resource Provider" -- : DiffResponse(diffs) "Import Driver" <- "Step Executor" -- : done(current states) "`pulumi import` Command" <- "Import Driver" -- : done(current states) "`pulumi import` Command" -> "PCL Converter" ++ : convert(current states) "`pulumi import` Command" <- "PCL Converter" -- : PCL resource definitions "`pulumi import` Command" -> "Language Code Generator" ++ : generateProgram(PCL resource definitions) "`pulumi import` Command" <- "Language Code Generator" -- : Generated resource definitions @enduml