Source code for idem_aws.exec.aws.application_autoscaling.scalable_target

"""Exec module for managing Amazon Application Autoscaling scalable target."""
from typing import Dict
from typing import List


[docs]async def get( hub, ctx, name, service_namespace: str, scaling_resource_ids: List[str] = None, scalable_dimension: str = None, ) -> Dict: """Use an un-managed scaling target as a data-source. Supply one of the inputs as the filter. Args: name(str): The name of the Idem state. service_namespace(str): The namespace of the Amazon Web Services service that provides the resource. For a resource provided by your own application or service, use custom-resource instead. scalable_dimension(str): The scalable dimension. This string consists of the service namespace, resource type, and scaling property. ecs:service:DesiredCount scaling_resource_ids(list[str], Optional): The identifier of the resource associated with the scaling target. This string consists of the resource type and unique identifier. Returns: .. code-block:: python {"result": True|False, "comment": A message List, "ret": None|Dict} Examples: Calling this exec module function from the cli with service_namespace .. code-block:: bash idem exec aws.application_autoscaling.scalable_target.get service_namespace="service_namespace" Calling this exec module function from within a state module in pure python. .. code-block:: python async def state_function(hub, ctx, name, service_namespace, scaling_resource_id, scalable_dimension): before = await hub.exec.aws.application_autoscaling.scalable_target.get( ctx=ctx, name=name, service_namespace=service_namespace, scaling_resource_ids=[scaling_resource_id], scalable_dimension=scalable_dimension, ) """ result = dict(comment=[], ret=None, result=True) ret = await hub.exec.boto3.client[ "application-autoscaling" ].describe_scalable_targets( ctx=ctx, ServiceNamespace=service_namespace, ResourceIds=scaling_resource_ids, ScalableDimension=scalable_dimension, ) if not ret["result"]: result["comment"] = ret["comment"] result["result"] = False return result if not ret["ret"]["ScalableTargets"]: result["comment"].append( hub.tool.aws.comment_utils.get_empty_comment( resource_type="aws.application_autoscaling.scaling_target", name=name ) ) return result resource = ret["ret"]["ScalableTargets"][0] if len(ret["ret"]["ScalableTargets"]) > 1: result["comment"].append( f"More than one aws.application_autoscaling.scaling_target resource was found. Use resource {resource.get('ResourceId')}" ) result[ "ret" ] = hub.tool.aws.application_autoscaling.conversion_utils.convert_raw_scaling_target_to_present( ctx, raw_resource=resource, idem_resource_name=name ) return result