Skip to content
Snippets Groups Projects
Select Git revision
  • main
  • add-wr-monitoring
  • L2SS-2153---Add-Datasource
  • add-python-package-template
  • L2SS-2104-update-loki-config
  • L2SS-2107-annotate-grafana-service-token
  • add-ipmi-exporter
  • L2SS-1002-create-docker-image
  • central-monitor-0.0.1
9 results

installation.rst

Blame
  • Code owners
    Assign users and groups as approvers for specific file changes. Learn more.
    repo_processing.py 2.03 KiB
    from neo4j import Driver 
    from graph_creation.cwl_parsing import get_cwl_from_repo
    from graph_creation.docker_parsing import parse_all_dockerfiles
    from graph_creation.utils import process_step_lookup
    from graph_creation.cwl_processing import process_cwl_commandline, process_cwl_inputs, process_cwl_outputs, process_cwl_steps
    from neo4j_graph_queries.utils import get_is_workflow
    import pprint
    
    def process_repos(repo_list: list[str], driver: Driver) -> None:
        """
        Processes a list of local repository paths containing CWL (Common Workflow Language) files,
        parsing each CWL file and creating the corresponding nodes and relationships in a Neo4j graph.
    
        The function extracts workflows and tools from each repository, processes the inputs, outputs, and 
        steps for each entity, and links them into a dependency graph. The Neo4j driver is used to interact 
        with the database, creating nodes and relationships based on the parsed CWL data.
    
        Parameters:
            repo_list (list[str]): A list of paths to local repositories. Each repository contains CWL files 
                                   that define workflows and tools
            driver (Driver): A Neo4j driver used to interact with the database
    
        Returns:
            None
        """
        for repo in repo_list:
            # Parse CWL files of current repo
            all_entities = get_cwl_from_repo(repo)
    
            # links = parse_all_dockerfiles(repo)
            for entity in all_entities:
                print(f'Processing: {entity["path"]}')
                is_workflow = get_is_workflow(entity)
                steps = None
                if is_workflow:
                    steps = process_step_lookup(entity)
                process_cwl_inputs(driver, entity)
                process_cwl_outputs(driver, entity, steps)
                if steps:
                    process_cwl_steps(driver, entity, steps)
                # elif entity['class'] == 'ExpressionTool':
                #     process_cwl_expression(driver, entity)
                # elif entity['class'] == 'CommandLineTool':
                #     process_cwl_commandline(driver, entity, links)