Source code for idem_aws.exec.aws.ecr.lifecycle_policy
"""Exec module for managing Amazon EC2 Container Registry (ECR) Lifecycle Policies."""
from typing import Any
from typing import Dict
__func_alias__ = {"list_": "list"}
[docs]async def get(
hub,
ctx,
name: str,
resource_id: str = None,
registry_id: str = None,
repository_name: str = None,
) -> Dict[str, Any]:
"""Retrieves a Amazon EC2 Container Registry (ECR) Lifecycle Policy created on a repository in a registry.
Args:
name(str):
An Idem name of the resource.
resource_id(str, Optional):
The name of the ECR repository in Amazon Web Services. If resource_id is not None, it takes precedence
in get API call.
registry_id(str, Optional):
The Amazon Web Services account ID associated with the registry that contains the repository
to search. If you do not specify a registry, the default registry is assumed.
repository_name(str):
The name of the repository to receive the policy.
Returns:
Dict[str, Any]:
Return image repository in a given registry.
Examples:
Calling this exec module function from the cli:
.. code-block:: bash
idem exec aws.ecr.lifecycle_policy.get name='idem_name' resource_id='ecr_lifecycle_policy'
Calling this exec module function from within a state:
.. code-block:: yaml
my_unmanaged_resource:
exec.run:
- path: aws.ecr.lifecycle_policy.get
- kwargs:
name: 'idem_name'
resource_id: 'ecr_lifecycle_policy'
"""
result = dict(comment=[], ret=None, result=True)
if resource_id:
if registry_id is None:
registry_id = resource_id.split("-")[0]
if repository_name is None:
repository_name = resource_id.split("-")[1]
describe_ret = await hub.exec.boto3.client.ecr.get_lifecycle_policy(
ctx=ctx, registryId=registry_id, repositoryName=repository_name
)
if not describe_ret["result"]:
# Do not return success=false when it is not found.
if "RepositoryNotFoundException" in str(
describe_ret["comment"]
) or "LifecyclePolicyNotFoundException" in str(describe_ret["comment"]):
result["comment"].append(
hub.tool.aws.comment_utils.get_empty_comment(
resource_type="aws.ecr.lifecycle_policy", name=resource_id
)
)
result["comment"] += list(describe_ret["comment"])
return result
result["comment"] += list(describe_ret["comment"])
result["result"] = False
return result
if not describe_ret["ret"]:
result["comment"].append(
hub.tool.aws.comment_utils.get_empty_comment(
resource_type="aws.ecr.lifecycle_policy", name=resource_id
)
)
return result
result[
"ret"
] = hub.tool.aws.ecr.conversion_utils.convert_raw_lifecycle_policy_to_present(
raw_resource=describe_ret.get("ret"),
idem_resource_name=name,
)
return result