def create_workflow(self, workflow_id, dataflow, is_persist): workflow_obj = Workflow(workflow_id, dataflow) # Picks out unique component names from all components mentioned in dataflow object component_names = list( set( list(dataflow.keys()) + [ component_name for sublist in dataflow.values() for component_name in sublist ])) # TODO: Verify dataflow - components, converters name_to_component = {} for component_name in component_names: # Skip for dataflow keywords if component_name in ["root"]: continue component = None # Reuse component if persist if is_persist and component_name in self.persist_name_to_component: component = self.persist_name_to_component[component_name] # Components that are pre-deployed as persistant if component_name in ["mongodb"]: component = self.persist_name_to_component[component_name] # Deploy component for non-persist case or first time persist if component is None: component = Component(component_name, is_persist, self.http_session) component.deploy(self.swarm_client) if is_persist: self.persist_name_to_component[component_name] = component # Add component to map name_to_component[component_name] = component workflow_obj.name_to_component = name_to_component self.workflow_id_to_obj[workflow_id] = workflow_obj