]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
doc: increase visibility of the peering state diagram 38146/head
authorJianshen Liu <jliu120@ucsc.edu>
Wed, 18 Nov 2020 04:44:30 +0000 (21:44 -0700)
committerJianshen Liu <jliu120@ucsc.edu>
Thu, 19 Nov 2020 04:26:54 +0000 (21:26 -0700)
Signed-off-by: Jianshen Liu <jliu120@ucsc.edu>
doc/scripts/gen_state_diagram.py

index cb968d49d4a379ce1c14a3a678315b35299c7c1e..868eaa287d3b41183db9f38f07b76bfb71079c9f 100755 (executable)
@@ -73,6 +73,17 @@ class StateMachineRenderer(object):
         self.subgraphnum = 0
         self.clusterlabel = {}
 
+        self.color_idx = 0
+        self.color_palette = [
+            "#000000",  # black
+            "#1e90ff",  # dodgerblue
+            "#ff0000",  # red
+            "#0000ff",  # blue
+            "#ffa500",  # orange
+            "#40e0d0",  # turquoise
+            "#c71585",  # mediumvioletred
+        ]
+
     def __str__(self):
         return "-------------------\n\nstates: %s\n\n machines: %s\n\n edges: %s\n\n context %s\n\n state_contents %s\n\n--------------------" % (
             self.states,
@@ -82,6 +93,13 @@ class StateMachineRenderer(object):
             self.state_contents
             )
 
+    def __next_color(self):
+        color = self.color_palette[self.color_idx]
+        self.color_idx += 1
+        if self.color_idx == len(self.color_palette):
+            self.color_idx = 0
+        return color
+
     def read_input(self, input_lines):
         previous_line = None
         for line in input_lines:
@@ -174,7 +192,12 @@ class StateMachineRenderer(object):
             yield "subgraph cluster%s {" % (str(self.subgraphnum),)
             self.subgraphnum += 1
             yield """\tlabel = "%s";""" % (state,)
-            yield """\tcolor = "blue";"""
+            yield """\tcolor = "black";"""
+
+            if state in self.machines.values():
+                yield """\tstyle = "filled";"""
+                yield """\tfillcolor = "lightgrey";"""
+
             for j in self.state_contents[state]:
                 for i in self.emit_state(j):
                     yield "\t"+i
@@ -183,7 +206,7 @@ class StateMachineRenderer(object):
             found = False
             for (k, v) in self.machines.items():
                 if v == state:
-                    yield state+"[shape=Mdiamond];"
+                    yield state+"[shape=Mdiamond style=filled fillcolor=lightgrey];"
                     found = True
                     break
             if not found:
@@ -197,7 +220,10 @@ class StateMachineRenderer(object):
             retval += "]"
             return retval
         for (fro, to) in self.edges[event]:
-            appendix = ['label="%s"' % (event,)]
+            color = self.__next_color()
+            appendix = ['label="%s"' % (event,),
+                        'color="%s"' % (color,),
+                        'fontcolor="%s"' % (color,)]
             if fro in self.machines.keys():
                 appendix.append("ltail=%s" % (self.clusterlabel[fro],))
                 while fro in self.machines.keys():