# Render with: `dot -T png -o zincati-actors.png zincati-actors.dot`
digraph actors_messages {
newrank = true;
fontsize=11;
node [shape=box, style="rounded", color=lightgrey; fontname="Arial"; fontsize=11;];
edge[arrowhead="vee"; fontcolor=darkgoldenrod; fontsize=8;];
subgraph cluster_metrics_service {
label = "Async Actor:\nmetrics service";
style = dashed;
color = deepskyblue;
ConnectionStream [label=<Connection>>;];
# Invisble placeholders.
InvisMetricsClient:s [style=invis];
InvisBottomMetrics [style=invis];
ConnectionStream:s -> InvisBottomMetrics:n [style=invis];
}
subgraph cluster_dbus_server {
label = "Sync Actor:\nD-Bus server";
style = dashed;
color = deepskyblue;
SyncLastRefersh [label="sync fn\nlast_refresh_time()"];
# Invisble placeholders.
InvisBottomDbus [style=invis];
}
subgraph cluster_update_agent {
label = "Async Actor:\nupdate agent";
style = dashed;
color = deepskyblue;
AsyncLocalDeployments [label="async fn\nlocal_deployments()"];
AsyncAttemptDeploy [label="async fn\nattempt_deploy()"];
AsyncFinalizeDeployment [label="async fn\nfinalize_deployment()"];
RefreshTick [label=<RefreshTick>>];
LastRefresh [label=<LastRefresh>>]
}
subgraph cluster_rpm_ostree_client {
label = "Sync Actor:\nrpm-ostree client";
style = dashed;
color = deepskyblue;
QueryLocalDeployments [label=<QueryLocalDeployments>>];
StageDeployment [label=<StageDeployment>>];
FinalizeDeployment [label=<FinalizeDeployment>>];
# Invisble placeholders.
QueryLocalDeployments:s -> StageDeployment:n [style=invis];
StageDeployment:s -> FinalizeDeployment:n [style=invis];
}
# Organize nodes in rows.
{ rank = same; InvisMetricsClient; SyncLastRefersh; LastRefresh; AsyncLocalDeployments; QueryLocalDeployments }
{ rank = same; ConnectionStream; RefreshTick; AsyncAttemptDeploy; StageDeployment }
{ rank = same; InvisBottomMetrics; InvisBottomDbus; AsyncFinalizeDeployment; FinalizeDeployment; }
# Edges.
InvisMetricsClient:s -> ConnectionStream:n [label="Metrics\nsocket\n connection"];
RefreshTick:ne -> RefreshTick:se;
{ rank = same; SyncLastRefersh:ne -> LastRefresh:nw; LastRefresh:sw -> SyncLastRefersh:se; }
{ rank = same; AsyncLocalDeployments:ne -> QueryLocalDeployments:nw; QueryLocalDeployments:sw -> AsyncLocalDeployments:se; }
{ rank = same; AsyncAttemptDeploy:ne -> StageDeployment:nw; StageDeployment:sw -> AsyncAttemptDeploy:se; }
{ rank = same; AsyncFinalizeDeployment:ne -> FinalizeDeployment:nw; FinalizeDeployment:sw -> AsyncFinalizeDeployment:se; }
}