def known_iam_actions(prefix): """Return known IAM actions for a prefix, e.g. all ec2 actions""" # This could be memoized for performance improvements knowledge = pipe(all_known_iam_permissions(), mapz(_parse_action), groupbyz(lambda x: x.prefix)) return knowledge.get(prefix, [])
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))