Source code for idem_aws.exec.aws.apigateway.rest_api
"""Exec module for managing Amazon API Rest APIs."""
[docs]async def get(hub, ctx, name: str, resource_id: str):
"""Returns a rest api, including their root resource id.
Args:
name (str): idem name associated with this resource_id.
resource_id (str): id of the specific rest_api to look up.
Returns:
dict[str, Any]:
Returns details of a rest_api.
Examples:
.. code-block:: bash
idem exec aws.apigateway.rest_api.get name=test_rest_api resource_id=xvwtynovjx --output json
Call from code:
.. code-block:: python
async def my_func(hub, ctx, name:str, resource_id:str):
await hub.exec.aws.apigateway.rest_api.get(ctx, name, resource_id, api_id)
Normally, rest_api would be managed via aws.apigateway.rest_api.present, but using get in a state is possible:
.. code-block:: yaml
my_unmanaged_rest_api:
exec.run:
- path: aws.apigateway.rest_api.get
- kwargs:
name: my_resource
resource_id: resource_id
"""
result = dict(comment=[], ret=None, result=True)
# find the rest_api
partial_rest_api = await hub.exec.boto3.client.apigateway.get_rest_api(
ctx, restApiId=resource_id
)
if not partial_rest_api["result"]:
result["comment"] += partial_rest_api["comment"]
result["result"] = False
return result
# find the id for the root resource ("/").
resources = await hub.exec.boto3.client.apigateway.get_resources(
ctx, restApiId=resource_id
)
if not resources["result"]:
result["comment"] += [
f"Unable to load root resource for rest_api '{partial_rest_api['ret']['name']}'. "
f"This is likely a temporary issue."
]
result["comment"] += resources["comment"]
result["result"] = False
return result
root_resource_id = None
for resource in resources["ret"]["items"]:
if resource["path"] == "/":
root_resource_id = resource["id"]
break
partial_rest_api["ret"]["rootResourceId"] = root_resource_id
# convert to expected format
result["ret"] = hub.tool.aws.apigateway.rest_api.convert_raw_rest_api_to_present(
partial_rest_api["ret"], idem_resource_name=name
)
return result