def trim_runtime(filters): """Remove runtime filters. Some filters can only be effectively evaluated at policy execution, ie. event filters. When evaluating conditions for dryrun or provisioning stages we remove them. """ def remove_filter(f): block = f.get_block_parent() block.filters.remove(f) if isinstance(block, BooleanGroupFilter) and not len(block): remove_filter(block) for f in iter_filters(filters): if isinstance(f, EventFilter): remove_filter(f)
def iter_filters(self, block_end=False): return iter_filters(self.filters, block_end=block_end)