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")
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)
def step_impl(context): context.cel['source'] = C7N_Rewriter.c7n_rewrite(context.cel['policy']) print(f"\nCEL: {context.cel['source']}\n") evaluate(context)