Source code for idem_aws.exec.aws.organizations.policy
"""Exec module for managing Organizations Policy."""
[docs]async def get(hub, ctx, name: str, resource_id: str):
"""Get Organization Policy from AWS.
Provide Policy id as input.
Args:
name(str):
An Idem name of the Organization policy.
resource_id(str):
AWS Organization policy ID
Returns:
Dict[bool, list, dict or None]:
result(bool):
Whether the result of the function has been successful (``True``) or not (``False``).
comment(list):
A list of messages.
ret(dict or None):
The Organization Policy in "present" format.
Examples:
Calling this exec module function from the cli:
.. code-block:: bash
idem exec aws.organizations.policy.get name="idem_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, **kwargs):
ret = await hub.exec.aws.organizations.policy.get(
ctx, name=name, resource_id=resource_id
)
"""
result = dict(comment=[], ret=None, result=True)
tags = []
before = await hub.exec.boto3.client.organizations.describe_policy(
ctx, PolicyId=resource_id
)
if not before["result"]:
if "PolicyNotFoundException" in str(before["comment"]):
result["comment"].append(
hub.tool.aws.comment_utils.get_empty_comment(
resource_type="aws.organizations.policy", name=name
)
)
result["comment"] += list(before["comment"])
return result
result["result"] = False
result["comment"] = before["comment"]
return result
resource_tags = await hub.exec.boto3.client.organizations.list_tags_for_resource(
ctx, ResourceId=resource_id
)
if not resource_tags["result"]:
result["result"] = False
result["comment"] = resource_tags["comment"]
return result
if before["ret"]:
tags = resource_tags["ret"].get("Tags", [])
result[
"ret"
] = hub.tool.aws.organizations.conversion_utils.convert_raw_policy_to_present(
before["ret"]["Policy"], tags=tags if tags else None
)
return result