Source code for idem_aws.exec.aws.cloudfront.distribution
"""Exec module for managing Amazon Cloudfront Distribution."""
from typing import Dict
[docs]async def get(
hub,
ctx,
name,
resource_id: str,
) -> Dict:
"""Use an un-managed Cloudfront distribution as a data-source. Supply resource_id as a filter.
Args:
name(str):
The name of the Idem state.
resource_id(str):
AWS cloudfront distribution id to identify the resource.
Returns:
.. code-block:: python
{"result": True|False, "comment": A message List, "ret": None|Dict}
Examples:
Calling this exec module function from the cli with name and resource_id
.. code-block:: bash
idem exec aws.cloudfront.distribution.get name="name" resource_id="resource_id"
Calling this exec module function from within a state module in pure python.
.. code-block:: python
async def state_function(hub, ctx, name, resource_id):
before = await hub.exec.aws.cloudfront.distribution.get(
ctx, name=name, resource_id=resource_id
)
"""
result = dict(comment=[], ret=None, result=True)
ret = await hub.exec.boto3.client.cloudfront.get_distribution(ctx, Id=resource_id)
if not ret["result"]:
if "NoSuchDistribution" in str(ret["comment"]):
result["comment"].append(
hub.tool.aws.comment_utils.get_empty_comment(
resource_type="aws.cloudfront.distribution", name=name
)
)
result["comment"] += list(ret["comment"])
return result
result["comment"] += list(ret["comment"])
result["result"] = False
return result
if not ret["ret"]["Distribution"]:
result["comment"].append(
hub.tool.aws.comment_utils.get_empty_comment(
resource_type="aws.cloudfront.distribution", name=name
)
)
return result
arn = ret["ret"]["Distribution"]["ARN"]
before_tag = await hub.exec.boto3.client.cloudfront.list_tags_for_resource(
ctx, Resource=arn
)
if not before_tag["result"]:
result["result"] = False
result["comment"] = before_tag["comment"]
return result
if before_tag["ret"].get("Tags"):
ret["ret"]["Distribution"]["Tags"] = (
before_tag["ret"].get("Tags").get("Items", [])
)
ret["ret"]["Distribution"]["ETag"] = ret["ret"]["ETag"]
result[
"ret"
] = hub.tool.aws.cloudfront.conversion_utils.convert_raw_distribution_to_present(
ctx, raw_resource=ret["ret"]["Distribution"], idem_resource_name=name
)
return result