예제 #1
0
def run(neo4j_session: neo4j.Session, config: Config) -> None:
    analysis_job_directory_path = config.analysis_job_directory
    if not analysis_job_directory_path:
        logger.info("Skipping analysis because no job path was provided.")
        return
    analysis_job_directory = pathlib.Path(analysis_job_directory_path)
    if not analysis_job_directory.exists():
        logger.warning(
            "Skipping analysis because the provided job path '%s' does not exist.",
            analysis_job_directory,
        )
        return
    if not analysis_job_directory.is_dir():
        logger.warning(
            "Skipping analysis because the provided job path '%s' is not a directory.",
            analysis_job_directory,
        )
        return
    logger.info("Loading analysis jobs from directory: %s",
                analysis_job_directory)
    for path in analysis_job_directory.glob("**/*.json"):
        logger.info("Running discovered analysis job: %s", path)
        try:
            GraphJob.run_from_json_file(
                path,
                neo4j_session,
                {"UPDATE_TAG": config.update_tag},
            )
        except (KeyboardInterrupt, SystemExit):
            raise
        except Exception:
            logger.exception(
                "An exception occurred while executing discovered analysis job: %s",
                path)
예제 #2
0
def run_cleanup_job(filename, neo4j_session, common_job_parameters):
    GraphJob.run_from_json(
        neo4j_session,
        read_text(
            'cartography.data.jobs.cleanup',
            filename,
        ),
        common_job_parameters,
    )
예제 #3
0
def run_analysis_job(filename, neo4j_session, common_job_parameters, package='cartography.data.jobs.analysis'):
    GraphJob.run_from_json(
        neo4j_session,
        read_text(
            package,
            filename,
        ),
        common_job_parameters,
    )
예제 #4
0
def run_analysis_job(filename, session, common_job_parameters):
    GraphJob.run_from_json(
        session,
        read_text(
            'cartography.data.jobs.analysis',
            filename,
        ),
        common_job_parameters,
    )
예제 #5
0
def run_cleanup_job(
    filename: str, neo4j_session: neo4j.Session, common_job_parameters: Dict,
    package: str = 'cartography.data.jobs.cleanup',
) -> None:
    GraphJob.run_from_json(
        neo4j_session,
        read_text(
            package,
            filename,
        ),
        common_job_parameters,
        get_job_shortname(filename),
    )