def make_dep(dep): if dep not in flow1.deps: color = 'blue' elif dep not in flow2.deps: color = 'red' else: color = 'black' return ' %s -> %s [color="%s"];' \ % (base.make_ident(dep.after), base.make_ident(dep.before), color)
def make_node(task): task_id = task.task_id if task.state == TaskState.FAILURE: color = "black" fillcolor = "red" fontcolor = "black" elif task.state == TaskState.SUCCESS: color = "black" fillcolor = "green" fontcolor = "white" elif task in self._running: color = "black" fillcolor = "yellow" fontcolor = "black" elif task in self._runnable: color = "black" fillcolor = "grey" fontcolor = "black" else: color = "black" fillcolor = "white" fontcolor = "black" label = make_task_label(task) return (""" %s [color="%s", fillcolor="%s", fontcolor="%s", style="filled", label="%s"];""" % (base.make_ident(task_id), color, fillcolor, fontcolor, label))
def make_node(task_id): if task_id not in flow1.tasks: color = 'blue' elif task_id not in flow2.tasks: color = 'red' else: color = 'black' return ' %s [color="%s"];' % (base.make_ident(task_id), color)
def dump_run_state_as_dot(self, make_task_label=None): """Dumps this workflow as a Graphviz/Dot definition. Args: make_task_label: Optional function: task -> task node label. Default is to use Task.MakeDotLabel(). Returns: A Graphviz/Dot definition for this workflow. """ if make_task_label is None: make_task_label = self._get_task_label def make_node(task): task_id = task.task_id if task.state == TaskState.FAILURE: color = "black" fillcolor = "red" fontcolor = "black" elif task.state == TaskState.SUCCESS: color = "black" fillcolor = "green" fontcolor = "white" elif task in self._running: color = "black" fillcolor = "yellow" fontcolor = "black" elif task in self._runnable: color = "black" fillcolor = "grey" fontcolor = "black" else: color = "black" fillcolor = "white" fontcolor = "black" label = make_task_label(task) return (""" %s [color="%s", fillcolor="%s", fontcolor="%s", style="filled", label="%s"];""" % (base.make_ident(task_id), color, fillcolor, fontcolor, label)) # Map: source -> set of dependencies dep_map = dict() # Seed the dependency map with all tasks: for task in self._tasks.values(): dep_map[base.make_ident(task.task_id)] = set() # Add dependencies: for dep in self._deps: dep_map[base.make_ident(dep.after)].add(base.make_ident(dep.before)) dep_map = _minimize_dep_map(_maximize_dep_map(dep_map)) deps = [] for src_target, dest_deps in dep_map.items(): for dest_dep in dest_deps: deps.append(' %s -> %s;' % (src_target, dest_dep)) return self._DOT_TEMPLATE % dict( nodes='\n'.join(sorted(map(make_node, self._tasks.values()))), deps='\n'.join(sorted(deps)), )
def make_dep(dep): return (' %s -> %s;' % (base.make_ident(dep.after), base.make_ident(dep.before)))
def make_node(task): return (' %s;' % base.make_ident(task.task_id))