Beispiel #1
0
def step_impl(context):
    context.cel['source'] = C7N_Rewriter.c7n_rewrite(context.text)
    decls = {
        "Resource": celpy.celtypes.MapType,
        "Now": celpy.celtypes.TimestampType,
        "C7N": celpy.celtypes.Value,  # Generally, this is opaque to CEL
    }
    decls.update(celpy.c7nlib.DECLARATIONS)
    context.cel['env'] = celpy.Environment(
        annotations=decls,
        runner_class=celpy.c7nlib.C7N_Interpreted_Runner
    )
    context.cel['ast'] = context.cel['env'].compile(context.cel['source'])
    context.cel['prgm'] = context.cel['env'].program(context.cel['ast'], functions=celpy.c7nlib.FUNCTIONS)
    # C7N namespace has active Policy, resource_manager, and filter_registry
    context.cel['activation'] = {
        "C7N": SimpleNamespace(
            filter=Mock(name="mock filter"),
            policy=Mock(name="mock policy"),
        ),
        "Resource": None,
        "Now": None
    }
    print(f"\nCEL: {context.cel['source']}\n")
Beispiel #2
0
def test_c7n_rewrite(mock_logical_connector):
    assert C7N_Rewriter.c7n_rewrite(
        'name: policy\nfilters: "text"\n') == sentinel.rewritten
    assert mock_logical_connector.mock_calls == [call(None, "text")]
 def __init__(self) -> None:
     self.filter_expr = C7N_Rewriter.c7n_rewrite(self.policy_doc)
Beispiel #4
0
def step_impl(context):
    context.cel['source'] = C7N_Rewriter.c7n_rewrite(context.cel['policy'])
    print(f"\nCEL: {context.cel['source']}\n")
    evaluate(context)