Source code for idem_aws.exec.aws.config.configuration_aggregator
"""Exec module for Amazon Configuration Aggregator."""
from typing import Dict
from typing import List
__func_alias__ = {"list_": "list"}
[docs]async def get(hub, ctx, name: str) -> Dict:
"""Get a Configuration Aggregator resource from AWS for a given name or resource_id.
Args:
name(str):
The name of the Configuration Aggregator.
Examples:
Calling from the CLI:
.. code-block:: bash
$ idem exec aws.config.configuration_aggregator.get name="name"
Using in a state:
.. code-block:: yaml
my_unmanaged_resource:
exec.run:
- path: aws.config.configuration_aggregator.get
- kwargs:
name: "unmanaged_configuration_aggregator"
"""
result = dict(comment=[], ret=None, result=True)
configuration_aggregator = (
await hub.exec.boto3.client.config.describe_configuration_aggregators(
ctx, ConfigurationAggregatorNames=[name]
)
)
if not configuration_aggregator["result"]:
if "NoSuchConfigurationAggregatorException" in str(
configuration_aggregator["comment"]
):
result["comment"].append(
hub.tool.aws.comment_utils.get_empty_comment(
resource_type="aws.config.configuration_aggregator", name=name
)
)
return result
result["comment"] += list(configuration_aggregator["comment"])
result["result"] = False
return result
if not configuration_aggregator["ret"]["ConfigurationAggregators"]:
result["comment"].append(
hub.tool.aws.comment_utils.get_empty_comment(
resource_type="aws.config.configuration_aggregator", name=name
)
)
return result
ret = hub.tool.aws.config.conversion_utils.convert_raw_config_aggregator_to_present(
ctx,
raw_resource=((configuration_aggregator["ret"])["ConfigurationAggregators"])[0],
)
result["ret"] = ret
return result
[docs]async def list_(hub, ctx, names: List[str] = None) -> Dict:
"""Get a Configuration Aggregator resources from AWS.
Args:
names(List[str] = Optional):
The name of the Configuration Aggregators.
https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/config.html#ConfigService.Client.describe_configuration_aggregators
Examples:
Calling from the CLI:
.. code-block:: bash
$ idem exec aws.config.configuration_aggregator.list configuration_aggregator_names="names"
Using in a state:
.. code-block:: yaml
my_unmanaged_resource:
exec.run:
- path: aws.config.configuration_aggregator.list
- kwargs:
names: ["unmanaged_configuration_aggregator"]
"""
result = dict(comment=[], ret=[], result=True)
if names:
for name in names:
configuration_aggregator_ret = await get(hub, ctx, name)
if not configuration_aggregator_ret["result"]:
hub.log.warning(
f"Could not get aggregator info for name {name}, hence skipping it in list"
)
result["comment"].append(configuration_aggregator_ret["comment"])
continue
result["ret"].append(configuration_aggregator_ret["ret"])
else:
configuration_aggregators = (
await hub.exec.boto3.client.config.describe_configuration_aggregators(ctx)
)
if not configuration_aggregators["result"]:
result["comment"] = configuration_aggregators["comment"]
result["result"] = False
return result
if not configuration_aggregators["ret"]["ConfigurationAggregators"]:
result["comment"].append(
hub.tool.aws.comment_utils.get_empty_comment(
resource_type="aws.config.configuration_aggregator",
name="configuration aggregators",
)
)
return result
for configuration_aggregator in configuration_aggregators["ret"][
"ConfigurationAggregators"
]:
resource_translated = hub.tool.aws.config.conversion_utils.convert_raw_config_aggregator_to_present(
ctx, raw_resource=configuration_aggregator
)
result["ret"].append(resource_translated)
return result