Beispiel #1
0
def run_checks(filename, template, rules, regions, mandatory_rules=None):
    """Run Checks against the template"""
    if regions:
        if not set(regions).issubset(set(REGIONS)):
            unsupported_regions = list(set(regions).difference(set(REGIONS)))
            msg = 'Regions %s are unsupported. Supported regions are %s' % (
                unsupported_regions, REGIONS)
            raise InvalidRegionException(msg, 32)

    errors = []

    runner = cfnlint.runner.Runner(rules,
                                   filename,
                                   template,
                                   regions,
                                   mandatory_rules=mandatory_rules)

    # Transform logic helps with handling serverless templates
    ignore_transform_error = False
    if not rules.is_rule_enabled(TransformError()):
        ignore_transform_error = True

    errors.extend(runner.transform())

    if errors:
        if ignore_transform_error:
            return ([])  # if there is a transform error we can't continue

        return (errors)

    # Only do rule analysis if Transform was successful
    try:
        errors.extend(runner.run())
    except Exception as err:  # pylint: disable=W0703
        msg = 'Tried to process rules on file %s but got an error: %s' % (
            filename, str(err))
        UnexpectedRuleException(msg, 1)
    errors.sort(key=lambda x: (x.filename, x.linenumber, x.rule.id))

    return (errors)
Beispiel #2
0
def run_checks(filename, template, rules, regions, mandatory_rules=None):
    """Run Checks against the template"""
    if regions:
        if not set(regions).issubset(set(REGIONS)):
            unsupported_regions = list(set(regions).difference(set(REGIONS)))
            msg = 'Regions %s are unsupported. Supported regions are %s' % (
                unsupported_regions, REGIONS)
            raise InvalidRegionException(msg, 32)

    matches = []

    runner = cfnlint.runner.Runner(rules, filename, template, regions, mandatory_rules=mandatory_rules)
    matches.extend(runner.transform())
    # Only do rule analysis if Transform was successful
    if not matches:
        try:
            matches.extend(runner.run())
        except Exception as err:  # pylint: disable=W0703
            msg = 'Tried to process rules on file %s but got an error: %s' % (filename, str(err))
            UnexpectedRuleException(msg, 1)
    matches.sort(key=lambda x: (x.filename, x.linenumber, x.rule.id))

    return(matches)