def filter_records(records, arns_to_filter_for=None, from_date=datetime.datetime(1970, 1, 1, tzinfo=pytz.utc), to_date=datetime.datetime.now(tz=pytz.utc)): """Filter records so they match the given condition""" result = list(pipe(records, filterz(_by_timeframe(from_date, to_date)), filterz(_by_role_arns(arns_to_filter_for)))) if not result and records: logging.warning(ALL_RECORDS_FILTERED) return result
def generate_policy(selected_records): """Generates a policy from a set of records""" statements = pipe( selected_records, mapz(Record.to_statement), filterz(lambda statement: statement is not None), _combine_statements_by(lambda statement: statement.Resource), _combine_statements_by(lambda statement: statement.Action), sortedz()) return PolicyDocument( Version="2012-10-17", Statement=statements, )
def _valid_log_files(self): def _valid_or_warn(log_file): if log_file.has_valid_filename(): return True logging.warning("Invalid filename: %s", log_file.filename()) return False def _to_paths(triple): root, _, files_in_dir = triple return [ os.path.join(root, file_in_dir) for file_in_dir in files_in_dir ] return pipe(os.walk(self._log_dir), mapcatz(_to_paths), mapz(LogFile), filterz(_valid_or_warn))