in src/run.py [0:0]
def load_from_regions_to_rules(self, policies: list[PolicyDict],
mapping: dict[str, set[str]]
) -> list[Policy]:
"""
Currently, self._load_global does not impact this method
Expected mapping:
{
'eu-central-1': {'epam-aws-005..', 'epam-aws-006..'},
'eu-west-1': {'epam-aws-006..', 'epam-aws-007..'}
}
:param policies:
:param mapping:
:return:
"""
rules = set(chain.from_iterable(mapping.values())) # all rules
if self._cloud != Cloud.AWS:
# load all policies ignoring region and set global to all
items = self._load(policies)
items = list(filter(lambda p: p.name in rules, items))
for policy in items:
self.set_global_output(policy)
return items
# self._cloud == Cloud.AWS
# first -> I load all the rules for regions that came + us-east-1.
# second -> execute self.prepare_policies in order to set global
# third -> For each region I keep only necessary rules
config = self._base_config()
config.regions = [*mapping.keys(), AWS_DEFAULT_REGION]
items = []
for policy in self.prepare_policies(self._load(policies, config)):
if self.is_global(policy) and policy.name in rules:
items.append(policy)
elif policy.name in (mapping.get(policy.options.region) or ()):
items.append(policy)
return items