@startuml driftctl -> Scanner: Resource() hnote across: Enumeration phase Scanner -> Scanner: List Enumerators loop Scanner -> Enumerator: Enumerate() Enumerator -> RemoteSDK: List resources RemoteSDK --> Enumerator: []remoteRes alt optionally retrieve resource needed attributes Enumerator -> RemoteSDK: Retrieve needed attributes RemoteSDK --> Enumerator: Attrs end Enumerator --> Scanner: []Resource with limited attributes end alt if deep mode enabled hnote across: Details fetching phase loop for each enumerated resource Scanner -> DetailsFetcher: ReadDetails(res) DetailsFetcher -> TerraformProvider: ReadResource() TerraformProvider --> DetailsFetcher: CTYValue DetailsFetcher -> Deserializer: Deserialize() Deserializer -> DetailsFetcher: Resource DetailsFetcher -> Scanner: Resource with\nfull attributes end end Scanner --> driftctl: []Resource @enduml