digraph "Kosmos"{ rankdir=TB node [ fontname="sans-serif"fontsize=10 ]; edge [ fontname="sans-serif"fontsize=10 ]; label="Kosmos System Overview"; overlap="ortho"; fontname="sans-serif" newrank=true subgraph cluster_keystone { fontname="sans-serif" label="Keystone"; fontsize=12 style="dashed" Keystone[label="Keystone API", style="dotted"]; } subgraph cluster_api_service { fontname="sans-serif" label="API Service"; fontsize=12 WSGI[label="WSGI API"]; } subgraph cluster_conductor_service { fontname="sans-serif" label="Conductor Service"; fontsize=12 Conductor[label="Conductor"]; Database[label="Database", shape="folder"]; Logger[label="Logger", shape="folder"]; } subgraph cluster_engine_service { fontname="sans-serif" label="Engine Service"; fontsize=12 node[shape=record]; Engine[label=" Engine| GSLB Plugin Interface | Status Check Consumer"]; PluginDriver[label="GSLB Plugin Driver", shape="component"] } subgraph cluster_gslb_appliance { fontname="sans-serif" fontsize=12 label="GSLB Appliance"; style="dashed" Applicance[label="GSLB Traffic Director", style="dotted"]; ApplicanceAPI[label="GSLB Appliance API", style="dotted"]; } subgraph cluster_status_checks { fontname="sans-serif" fontsize=12 label="Status Check Service"; Worker[label="Status Checking Worker"]; node[shape=record]; Checks[label=" Build In Checks Interface | GSLB Plugin Checks Interface"]; BuiltInChecks[label="Built In Status Checks"] PluginChecks[label="Plugin Status Checks", shape="component"] } subgraph cluster_endpoints { fontname="sans-serif" fontsize=12 label="Endpoints"; style="dashed" Endpoint1[label="Endpoint", style="dotted"]; Endpoint2[label="Endpoint", style="dotted"]; Endpoint3[label="Endpoint", style="dotted"]; LBaaSAPI[label="LBaaS Status API", style="dotted"]; } AdminUser[label="GSLB User", style="dashed"]; AdminUser -> WSGI [dir="both"]; Keystone -> WSGI [dir="both"]; WSGI -> Conductor:f0 [dir="both"]; Conductor -> Database [dir="both"]; Engine:f0 -> Conductor [dir="both"]; Engine:f1 -> PluginDriver [dir="both"]; PluginDriver -> ApplicanceAPI [dir="both"]; Applicance -> ApplicanceAPI [dir="both"]; Worker -> Engine:f2; Worker -> Checks [dir="both"]; Checks:f0 -> BuiltInChecks [dir="both"]; Checks:f1 -> PluginChecks [dir="both"]; BuiltInChecks -> {Endpoint1; Endpoint2; Endpoint3; LBaaSAPI} [dir="both"]; LBaaSAPI -> {Endpoint1; Endpoint2; Endpoint3} PluginChecks -> {Endpoint1; Endpoint2; Endpoint3} [dir="both"]; EndUser[label="End User", style="dashed"]; EndUser -> Applicance EndUser -> {Endpoint1; Endpoint2; Endpoint3} }