Esempio n. 1
0
 def add_graph_struct(self, graph_name: str, graph_struct: GraphStruct) -> int:
     graph_view = self.graphs.collection_view(graph_name)
     graph_struct.graph_name = graph_name
     try:
         new_revision = self.read_graph_struct(graph_name).revision + 1
     except:
         new_revision = 0
     graph_struct.revision = new_revision
     # FIXME(luckygeck): possible race condition
     graph_view.put(str(new_revision), graph_struct.to_json())
     return new_revision
Esempio n. 2
0
def _prepare_graph_struct(name: Optional[str], graph: TextIO, hosts: List[str], graph_format: str) -> dict:
    if graph_format == 'raw':
        return json.load(graph)
    assert name and hosts, 'Only raw graph format can not set hosts and name'
    result = GraphStruct()
    result.graph_name = name
    result.clusters.from_json({'I': hosts})
    if graph_format == 'script':
        task = ExtendedTaskStruct()
        task.task_name = 'main'
        task.hosts.append('I')
        task.task_struct.executor.name = 'shell'
        executor_cfg = ShellExecutorConfig()
        executor_cfg.shell_script = graph.read()
        task.task_struct.executor.config = executor_cfg.to_json()
        result.tasks.from_json([task.to_json()])
    elif graph_format == 'makefile':
        raise NotImplementedError()
    return result.to_json()