Exemple #1
0
def list_evals_impl(dbsession,
                    userId,
                    policyId=None,
                    imageDigest=None,
                    tag=None,
                    evalId=None,
                    newest_only=False):
    logger.debug("looking up eval record: " + userId)

    # set up the filter based on input
    dbfilter = {}

    if policyId is not None:
        dbfilter['policyId'] = policyId

    if imageDigest is not None:
        dbfilter['imageDigest'] = imageDigest

    if tag is not None:
        dbfilter['tag'] = tag

    if evalId is not None:
        dbfilter['evalId'] = evalId

    # perform an interactive eval to get/install the latest
    try:
        logger.debug("performing eval refresh: " + str(dbfilter))
        imageDigest = dbfilter['imageDigest']
        if 'tag' in dbfilter:
            evaltag = dbfilter['tag']
        else:
            evaltag = None

        if 'policyId' in dbfilter:
            policyId = dbfilter['policyId']
        else:
            policyId = None

        rc = catalog_impl.perform_policy_evaluation(userId,
                                                    imageDigest,
                                                    dbsession,
                                                    evaltag=evaltag,
                                                    policyId=policyId)

    except Exception as err:
        logger.error(
            "interactive eval failed, will return any in place evaluation records - exception: "
            + str(err))

    records = db_policyeval.tsget_byfilter(userId,
                                           session=dbsession,
                                           **dbfilter)
    # Return None instead?
    #if not records:
    #    raise Exception("eval not found in DB")

    return records
Exemple #2
0
def list_evals_impl(dbsession, userId, policyId=None, imageDigest=None, tag=None, evalId=None, newest_only=False, interactive=False):
    logger.debug("looking up eval record: " + userId)

    object_store_mgr = object_store.get_manager()

    # set up the filter based on input
    dbfilter = {}
    latest_eval_record = latest_eval_result = None

    if policyId is not None:
        dbfilter['policyId'] = policyId

    if imageDigest is not None:
        dbfilter['imageDigest'] = imageDigest

    if tag is not None:
        dbfilter['tag'] = tag

    if evalId is not None:
        dbfilter['evalId'] = evalId

    # perform an interactive eval to get/install the latest
    try:
        logger.debug("performing eval refresh: " + str(dbfilter))
        imageDigest = dbfilter['imageDigest']
        if 'tag' in dbfilter:
            evaltag = dbfilter['tag']
        else:
            evaltag = None

        if 'policyId' in dbfilter:
            policyId = dbfilter['policyId']
        else:
            policyId = None

        latest_eval_record, latest_eval_result = catalog_impl.perform_policy_evaluation(userId, imageDigest, dbsession, evaltag=evaltag, policyId=policyId, interactive=interactive, newest_only=newest_only)
    except Exception as err:
        logger.error("interactive eval failed - exception: {}".format(err))

    records = []
    if interactive or newest_only:
        try:
            latest_eval_record['result'] = latest_eval_result
            records = [latest_eval_record]
        except:
            raise Exception("interactive or newest_only eval requested, but unable to perform eval at this time")
    else:
        records = db_policyeval.tsget_byfilter(userId, session=dbsession, **dbfilter)
        for record in records:
            try:
                result = object_store_mgr.get_document(userId, 'policy_evaluations', record['evalId'])
                record['result'] = result
            except:
                record['result'] = {}

    return records
Exemple #3
0
def list_evals_impl(dbsession,
                    userId,
                    policyId=None,
                    imageDigest=None,
                    tag=None,
                    evalId=None,
                    newest_only=False,
                    interactive=False):
    logger.debug("looking up eval record: " + userId)

    # set up the filter based on input
    dbfilter = {}

    if policyId is not None:
        dbfilter['policyId'] = policyId

    if imageDigest is not None:
        dbfilter['imageDigest'] = imageDigest

    if tag is not None:
        dbfilter['tag'] = tag

    if evalId is not None:
        dbfilter['evalId'] = evalId

    # perform an interactive eval to get/install the latest
    try:
        logger.debug("performing eval refresh: " + str(dbfilter))
        imageDigest = dbfilter['imageDigest']
        if 'tag' in dbfilter:
            evaltag = dbfilter['tag']
        else:
            evaltag = None

        if 'policyId' in dbfilter:
            policyId = dbfilter['policyId']
        else:
            policyId = None

        latest_eval_record, latest_eval_result = catalog_impl.perform_policy_evaluation(
            userId,
            imageDigest,
            dbsession,
            evaltag=evaltag,
            policyId=policyId,
            interactive=interactive,
            newest_only=newest_only)

    except Exception as err:
        logger.error(
            "interactive eval failed, will return any in place evaluation records - exception: "
            + str(err))

    records = []
    if interactive or newest_only:
        latest_eval_record['result'] = latest_eval_result
        records = [latest_eval_record]
    else:
        records = db_policyeval.tsget_byfilter(userId,
                                               session=dbsession,
                                               **dbfilter)
        for record in records:
            try:
                result = archive_sys.get_document(userId, 'policy_evaluations',
                                                  record['evalId'])
                record['result'] = result
            except:
                record['result'] = {}

    return records