def perform_drift_detection()

in cartography/driftdetect/detect_drift.py [0:0]


def perform_drift_detection(session, expect_folder, update):
    """
    Perform Drift Detection
    :type session: neo4j_session
    :param session: session with infrastructure information
    :type expect_folder: string
    :param expect_folder: detector directory
    :type update: Decides whether or not to update the graph
    :param update: boolean
    :return: list of tuples of drift dictionaries and detectors
    """
    drift_info_detector_pairs = []
    for root, _, filenames in os.walk(expect_folder):
        for filename in filenames:
            file_path = os.path.join(root, filename)
            try:
                detector = load_detector_from_json_file(file_path)
                for drift_info in detector.run(session, update):
                    drift_info_detector_pairs.append((drift_info, detector))
                if update:
                    try:
                        write_detector_to_json_file(detector, file_path)
                    except ValidationError as err:
                        msg = "Unable to save DriftDetector from file {0}.\n{1}".format(file_path, err.messages)
                        logger.exception(msg)
            except ValidationError as err:
                msg = "Unable to create DriftDetector from file {0}.\n{1}".format(file_path, err.messages)
                logger.exception(msg)
    return drift_info_detector_pairs