[cig-commits] r15466 - cs/portal/trunk/northridge/backend
leif at geodynamics.org
leif at geodynamics.org
Thu Jul 16 22:34:52 PDT 2009
Author: leif
Date: 2009-07-16 22:34:52 -0700 (Thu, 16 Jul 2009)
New Revision: 15466
Added:
cs/portal/trunk/northridge/backend/flow.dot
Log:
Created a 'dot' graph to illustrate how the portal daemon works.
Added: cs/portal/trunk/northridge/backend/flow.dot
===================================================================
--- cs/portal/trunk/northridge/backend/flow.dot (rev 0)
+++ cs/portal/trunk/northridge/backend/flow.dot 2009-07-17 05:34:52 UTC (rev 15466)
@@ -0,0 +1,94 @@
+digraph G {
+ node [shape=box];
+
+ graph[label="Daemon"];
+ subgraph clusterDaemon {
+ node [shape=parallelogram];
+ main[label="main"];
+ }
+
+ graph[label="PortalConnection"];
+ subgraph clusterPortalConnection {
+ runFactory[label="runFactory"];
+ runWatcher1[label="runWatcher #1"];
+ runWatcher2[label="runWatcher #2"];
+ jobWatcher1[label="jobWatcher #1"];
+ jobWatcher2[label="jobWatcher #2"];
+ jobSink1[label="jobSink #1"];
+ jobSink2[label="jobSink #2"];
+
+ node [shape=ellipse];
+ list_py[label="http://.../list.py"];
+ run_1_status[label="http://.../runs/1/status/"];
+ run_2_status[label="http://.../runs/2/status/"];
+ job_1_update[label="http://.../jobs/1/update/"];
+ job_2_update[label="http://.../jobs/2/update/"];
+ }
+
+ graph[label="Run #1"];
+ subgraph clusterRun1 {
+ run1[label="__call__"];
+ }
+ graph[label="Run #2"];
+ subgraph clusterRun2 {
+ run2[label="__call__"];
+ }
+
+ graph[label="JobManager"];
+ subgraph clusterJobManager {
+ jobRunner1[label="jobRunner #1"];
+ jobRunner2[label="jobRunner #2"];
+ }
+
+ job1[label="Job #1"];
+ job2[label="Job #2"];
+
+ graph[label="Clock"];
+ subgraph clusterClock {
+ node[shape=doublecircle,color=red];
+ clock[label="tick"];
+ }
+
+ subgraph messages {
+ edge[style=dashed,color=blue,fontcolor=blue];
+ main->runFactory[label="runSimulations"];
+ runFactory->run1[label="go"];
+ runFactory->run2[label="go"];
+ /*runFactory->runWatcher1[label="watchRun"];
+ runFactory->runWatcher2[label="watchRun"];*/
+ jobRunner1->job1[label="setStatus"];
+ jobRunner2->job2[label="setStatus"];
+ jobSink1->jobWatcher1[label="watchJob"];
+ jobSink2->jobWatcher2[label="watchJob"];
+ jobRunner1->run1[label="runJob",dir=back];
+ jobRunner2->run2[label="runJob",dir=back];
+ }
+
+ subgraph events {
+ edge[color=red,fontcolor=red];
+ run1->runWatcher1;
+ run2->runWatcher2[label="statusChanged"];
+ job1->jobWatcher1[label="statusChanged"];
+ job2->jobWatcher2;
+ job1->run1;
+ job2->run2;
+ }
+
+ subgraph channels {
+ edge[color=forestgreen,fontcolor=forestgreen];
+ run1->jobSink1[label="jobChannel"];
+ run2->jobSink2;
+ }
+
+ subgraph requests {
+ edge[color=purple,fontcolor=purple];
+ runFactory->list_py[label="GET"];
+ runWatcher1->run_1_status[label="POST"];
+ runWatcher2->run_2_status[label="POST"];
+ jobWatcher1->job_1_update[label="POST"];
+ jobWatcher2->job_2_update[label="POST"];
+ }
+
+ graph[label="daemon.py"];
+
+}
More information about the CIG-COMMITS
mailing list