Exemplo n.º 1
0
 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)
Exemplo n.º 2
0
        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))
Exemplo n.º 3
0
 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)
Exemplo n.º 4
0
    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)),
        )
Exemplo n.º 5
0
 def make_dep(dep):
     return ('  %s -> %s;' % (base.make_ident(dep.after), base.make_ident(dep.before)))
Exemplo n.º 6
0
 def make_node(task):
     return ('  %s;' % base.make_ident(task.task_id))