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
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()