Source code for idem_gcp.exec.gcp.cloudkms.location

"""Exec module for managing Cloud Key Management Service locations."""
from typing import Any
from typing import Dict


__func_alias__ = {"list_": "list"}


[docs]async def get( hub, ctx, resource_id: str, ): """Returns a location by its Idem resource ID. Args: resource_id(str): Idem resource ID. ``projects/{project id}/locations/{location id}`` Returns: Location resource Examples: .. code-block:: sls {% set project_id = 'project-name' %} {% set location_id = 'us-east1' %} get-location: exec.run: - path: gcp.cloudkms.location.get - kwargs: resource_id: projects/{{project_id}}/locations/{{location_id}} """ result = { "comment": [], "ret": [], "result": True, } location = await hub.exec.gcp_api.client.cloudkms.projects.locations.get( ctx, _name=resource_id ) if not location["result"]: result["comment"] += location["comment"] result["result"] = False return result result["ret"] = location["ret"] if not result["ret"]: result["comment"] += ( hub.tool.gcp.comment_utils.get_empty_comment( "gcp.cloudkms.location", resource_id ), ) return result
[docs]async def list_( hub, ctx, project: str = None, filter_: (str, "alias=filter") = None ) -> Dict[str, Any]: r"""Retrieves the locations for a specific project. Args: project(str, Optional): Project ID for this request. If not provided will use the one configured in `ctx` filter(str, Optional): A filter to narrow down results to a preferred subset. The filtering language accepts strings like "displayName=tokyo", and is documented in more detail in `AIP-160`_. .. _AIP-160: https://google.aip.dev/160 Examples: .. code-block:: sls list-locations: exec.run: - path: gcp.cloudkms.location.list - kwargs: project: project-name """ result = { "comment": [], "ret": [], "result": True, } if project: name = f"projects/{project}" else: name = f"projects/{ctx.acct.project_id}" locations = await hub.exec.gcp_api.client.cloudkms.projects.locations.list( ctx, _name=name, filter=filter_ ) if not locations["result"]: result["comment"] += locations["comment"] result["result"] = False return result result["ret"] = locations["ret"].get("items", []) return result