
    Vh>              	         d dl mZ dZdZdZd dlZd dlmZ d dlm	Z	 d dlm
Z
 d d	lmZ d d
lmZ d dlmZ d dlmZ d dlmZ d dlmZ d dlmZ ej,                  r0d dlmZ d dlmZ d dlmZ d dlmZ d dlmZ d dlmZ d dlmZ d dlmZ g dddgdgddgdgddgg dg dd Z dFd!Z!dGd"Z"dHd#Z#dId$Z$d% Z% ejL                  d&       ejN                         dJd'              Z( ejL                  d(       ejN                         	 	 	 	 	 	 	 	 dKd)              Z) ejL                  d*       ejN                         	 	 	 	 	 	 	 	 dLd+              Z* ejL                  d,       ejN                         dMd-              Z+ ejL                  d.       ejN                         	 	 	 	 	 	 	 	 dLd/              Z, ejL                  d0       ejN                         	 	 	 	 	 	 	 	 dLd1              Z- ejL                  d2       ejN                         dMd3              Z.	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dNd4Z/d5 Z0dOd6Z1	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dPd7Z2	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dPd8Z3	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dQd9Z4	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dQd:Z5	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dPd;Z6	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dRd<Z7	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dSd=Z8	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dTd>Z9dUd?Z:dUd@Z;dUdAZ<dUdBZ=dC Z>dD Z?e@dEk(  r e?        yy)V    )annotationsa  
---
module: autoscaling_instance
version_added: 9.0.0
short_description: manage instances associated with AWS AutoScaling Groups (ASGs)
description:
  - Manage instances associated with AWS AutoScaling Groups (ASGs).
author:
  - "Mark Chappell (@tremble)"
options:
  group_name:
    description:
      - Name of the AutoScaling Group to manage.
    type: str
    required: True
  state:
    description:
      - The expected state of the instances.
      - V(present) - The instance(s) should be attached to the AutoScaling Group and in service.
      - V(attached) - The instance(s) should be attached to the AutoScaling Group.
        Instances in Standby will remain in standby.
      - V(standby) - The instance(s) should be placed into standby.
        Instances must already be part of the AutoScaling Group.
      - V(detached) - The instance(s) will be detached from the AutoScaling Group.
      - V(terminated) - The instance(s) will be terminated.
        By default terminated instances will be replaced with new instances, to reduce the desired
        capacity at the same time as terminating instances set O(decrement_desired_capacity=True).
      - B(Note:) When adding instances to an AutoScaling Group or returning instances to service
        from standby, the desired capacity is B(always) incremented.  If the total number of
        instances would exceed the maximum size of the group then the operation will fail.
    choices: ['present', 'attached', 'terminated', 'detached', 'standby']
    default: present
    type: str
  instance_ids:
    description:
      - The IDs of the EC2 instances.
      - Required if O(state) is one of V(standby), V(detached), V(terminated).
    type: list
    elements: str
  purge_instances:
    description:
      - Ignored unless O(state=present) or O(state=attached).
      - If O(purge_instances=True), any instances not in O(instance_ids) will be scheduled for B(termination).
      - B(Note:) Instances will be scheduled for termination B(after) any new instances are added to
        the AutoScaling Group and, if O(wait=True) and they will be terminated B(after) the new instances
        have reached the expected state.
    default: false
    type: bool
  decrement_desired_capacity:
    description:
      - When O(decrement_desired_capacity=True), detaching instances, terminating instances, or
        placing instances in standby mode will decrement the desired capacity of the AutoScaling Group
    default: false
    type: bool
  health:
    description:
      - Sets the health of an instance to a specific state.
    type: str
    choices: ["Healthy", "Unhealthy"]
  respect_grace_period:
    description:
      - Set O(respect_grace_period=False) to ignore the grace period associated with the AutoScaling
        group when modifying the O(health).
      - Ignored unless O(health) is set.
      - AWS defaults to respecting the grace period when modifying the health state of an instance.
    type: bool
    default: True
  protection:
    description:
      - Sets the scale-in protection attribute.
    type: bool
  wait:
    description:
      - When O(wait=True) will wait for instances to reach the requested state before returning.
    type: bool
    default: True
  wait_timeout:
    description:
      - Maximum time to wait for instances to reach the desired state.
    type: int
    default: 120
extends_documentation_fragment:
  - amazon.aws.common.modules
  - amazon.aws.region.modules
  - amazon.aws.boto3

a  
auto_scaling_instances:
  description: A description of the EC2 instances attached to an Auto Scaling group.
  returned: always
  type: list
  contains:
    availability_zone:
      description: The availability zone that the instance is in.
      returned: always
      type: str
      sample: "us-east-1a"
    health_status:
      description: The last reported health status of the instance.
      returned: always
      type: str
      sample: "Healthy"
    instance_id:
      description: The ID of the instance.
      returned: always
      type: str
      sample: "i-123456789abcdef01"
    instance_type:
      description: The instance type of the instance.
      returned: always
      type: str
      sample: "t3.micro"
    launch_configuration_name:
      description: The name of the launch configuration used when launching the instance.
      returned: When the instance was launched using an Auto Scaling launch configuration.
      type: str
      sample: "ansible-test-49630214-mchappel-thinkpadt14gen3-asg-instance-1"
    launch_template:
      description: A description of the launch template used when launching the instance.
      returned: When the instance was launched using an Auto Scaling launch template.
      type: dict
      contains:
        launch_template_id:
          description: The ID of the launch template used when launching the instance.
          returned: always
          type: str
          sample: "12345678-abcd-ef12-2345-6789abcdef01"
        launch_template_name:
          description: The name of the launch template used when launching the instance.
          returned: always
          type: str
          sample: "example-launch-configuration"
        version:
          description: The version of the launch template used when launching the instance.
          returned: always
          type: str
          sample: "$Default"
    lifecycle_state:
      description: The lifecycle state of the instance.
      returned: always
      type: str
      sample: "InService"
    protected_from_scale_in:
      description: Whether the instance is protected from termination when the Auto Scaling group is scaled in.
      returned: always
      type: bool
      sample: false
N)deepcopy)
WAITER_MAP)AnsibleAutoScalingError)AutoScalingErrorHandler)get_autoscaling_instances)get_autoscaling_waiter)AnsibleAWSError)AnsibleAWSModule)AWSRetry)custom_waiter_config)Any)Dict)List)Optional)Set)Tuple)RetryingBotoClientWrapper)AnsibleAWSResourceList)PendingzPending:ProceedzPending:Wait	InServiceStandbyEnteringStandby	DetachingDetached)TerminatingTerminating:WaitTerminating:Proceed)r   r   r   
Terminated)pendingstableentering	entering+	detaching
detaching+terminatingterminating+c                J    | D ch c]  }|j                  d       c}S c c}w Ninstance_idget)	instancesis     s/home/dcms/DCMS/lib/python3.12/site-packages/ansible_collections/amazon/aws/plugins/modules/autoscaling_instance.py_all_instance_idsr1      s    *34QAEE- 444s    c                    |j                         }| D ch c]7  }|j                  dd      j                         |k(  s'|j                  d      9 c}S c c}w )Nhealth_status r+   lowerr-   )r.   healthr/   s      r0   _instance_ids_with_healthr8      sF    \\^F*3dQquu_b7Q7W7W7Y]c7cAEE- ddds
   (AAc                v    | D ch c])  }|j                  dd      |k(  s|j                  d      + c}S c c}w )Nprotected_from_scale_inFr+   r,   )r.   
protectionr/   s      r0   _instance_ids_with_protectionr<      s4    *3mQquu=VX]7^bl7lAEE- mmms   66c                    |D cg c]  }|j                          }}| D ch c]6  }|j                  dd      j                         |v s&|j                  d      8 c}S c c}w c c}w )Nlifecycle_stater4   r+   r5   )r.   statessr/   s       r0   _instance_ids_in_statesrA      s[    !'(Aaggi(F(*3fQquu=NPR7S7Y7Y7[_e7eAEE- ff )fs   A 'A%
A%c                    t        | |d      S )NHealthy)r+   auto_scaling_group_namer3   )dict)r+   
group_names     r0   _token_instancerG      s     *     zset instance healthc                *    | j                  |||      S )N)
InstanceIdHealthStatusShouldRespectGracePeriod)set_instance_health)clientr+   r7   respect_graces       r0   _set_instance_healthrP      s%     %%!. &  rH   zset instance protectionc                <    | j                  t        |      ||      S )N)InstanceIdsAutoScalingGroupNameProtectedFromScaleIn)set_instance_protectionlist)rN   instance_idsrF   	protecteds       r0   _set_instance_protectionrY      s*    
 ))&'& *  rH   z(detach auto scaling instances from groupc                <    | j                  t        |      ||      S N)rR   rS   ShouldDecrementDesiredCapacity)detach_instancesrV   rN   rW   rF   decrement_capacitys       r0   _detach_instancesr`      s*    
 ""&''9 #  rH   z&attach auto scaling instances to groupc                :    | j                  t        |      |      S N)rR   rS   )attach_instancesrV   rN   rW   rF   s      r0   _attach_instancesre     s'     ""&' #  rH   z terminate auto scaling instancesc                <    | j                  t        |      ||      S r[   )(terminate_instance_in_auto_scaling_grouprV   r^   s       r0   _terminate_instancesrh     s*    
 ::&''9 ;  rH   z)place auto scaling instances into standbyc                <    | j                  t        |      ||      S r[   )enter_standbyrV   r^   s       r0   _enter_standbyrk     s*    
 &''9    rH   z3return auto scaling instances to group from standbyc                :    | j                  t        |      |      S rb   )exit_standbyrV   rd   s      r0   _leave_standbyrn   '  s'     &'   rH   c                    |sy |ry |sy t        |d      }t        | t        |         }  t        j                  d|       |j
                        t        |      |       y )N
   )timeoutdefault_pausezwait for instances to reach )rR   WaiterConfig)r   r
   r   r   common_error_handlerwaitrV   )	rN   state
check_moderF   rW   ru   wait_timeoutwaiter_configwaiters	            r0   wait_instance_stater{   0  sq     (RPM#FJu,=>FeX003OPUw1WXY_YdYde&"
 rH   c                    |s| S t        |      D ]  }| j                  t        ||              t        | d       } | S )Nc                &    | j                  dd       S r*   r,   )ds    r0   <lambda>z#_inject_instances.<locals>.<lambda>P  s    mT0J rH   )key)rV   appendrG   sorted)r.   rF   missing_idsinstances       r0   _inject_instancesr   K  sI    % @:>?@y&JKIrH   c                h    | D ],  }|j                  d      |v s|||d<   |||d<   |(||d<   . | S )Nr+   r>   r3   r:   r,   )r.   rF   
change_idsrv   r7   r;   r   s          r0   _change_instancesr   T  s^     A<<&*4 .3*+!,2)%6@23A rH   c           	     @   t        |      }t        |t        d         |z  }t        |t        d         |z  }	t        |t        d         |z  }
t        |t        d         |z  }t        |t        d         |z  }|r6|	|
z  |z  |z  |z  }t        t	        |      ||d      }t        ||z
        |fS |rt        | d|||||       |
rt        | d	|||
||       |||
z  z  }|rt        | |||       ||z  }t        | d|||||       t        | |
      }t        |      |fS )Nr(   r%   r!   r#   r"   r    rv   r   r   rF   )	setrA   	STATE_MAPr   r   boolr{   rh   r	   )rN   rw   instances_startrF   rW   decrement_desired_capacityru   rx   terminating_idsdetaching_idspending_idsentering_ids	ready_idsr   instances_changedinstances_completes                   r0   ensure_instance_terminatedr   `  sa    |$L .oy?XY\hhO ,OY{=STWccM)/9Y;OPS__K*?Ij<QRUaaL'89LMP\\I"[0<?)Ko]
-h.GU_gstJ013DDD FIz:|UY[ghFKZVZ\hi++IVY
<VWy Oj*oW[]ij26jQ	?...rH   c           	     d   t        |      }t        |t        d         |z  }t        |t        d         |z  }	t        |t        d         |z  }
t        |t        d         |z  }t        |t        d         |z  }|r3|
|z  |z  |z  }t        t	        |      ||d      }t        ||z
        |fS |rt        | d|||||       |
rt        | d	|||
||       |||
z  z  }|rt        | |||       ||z  }|	rt        | d
|||	||       |rt        | d|||||       t        | |      }t        |      |fS )Nr&   r(   r!   r#   r"   r   r   r   r   r    r   )	r   rA   r   r   r   r   r{   r`   r	   )rN   rw   r   rF   rW   r   ru   rx   r   r   r   r   r   r   r   r   s                   r0   ensure_instance_absentr     sz    |$L ,OY|=TUXddM .oy?XY\hhO */9Y;OPS__K*?Ij<QRUaaL'89LMP\\I </);mK
-h.GU_gqrJ./1BBB FIz:|UY[ghFKZVZ\hi++I&)Z9STYMFL*j/[_amnFJ
JW[]ij26jQ	?...rH   c	           	        t        |      }t        |      }	||	z
  }
|
t        |dg      |z  z  }
t        |t        d         |z  }t        |t        d         |z  }t        |t        d         |z  }|r|	|z
  n	t               }|rIt	        t        |      ||
      }|
|z  }
t        |||
d      }t        |||d      }t        |
|z        |fS |rt        | d|||||       |
|z  }
|
rt        | |
|       ||
z  }t        | d|||||       |r$t        | |||       ||z  }t        | d|||||       t        | |      }t        ||
z        |fS )	Nr   r%   r!   r(   r   r   r    r   )r   r1   rA   r   r   r   r   r   r{   re   rh   r	   )rN   rw   r   rF   rW   r   purgeru   rx   all_idsr   r   r   r   	purge_idsr   r   s                    r0   ensure_instance_attachedr     s    |$L0G (K*?ZLILXXK+OY{=STWccM)/9Y;OPS__K-oy?XY\hhO,1<'suI-h.GU`a}$-.?[`kl-.?Y^jkK)+,.???FJ
JW[]ij= K&+z:;K Z[RVXde VY
<VW9$FL*j/[_amn26jQ	K'(*<<<rH   c	           	        t        |      }t        |      }	t        |t        d         |z  }
t        |t        d         |z  }t        |t        d         |z  }t        |dg      |z  }||	z
  }|r|	|z
  n	t               }|rR||z  |z  |z  }t	        t        |      ||      }t        ||||
z  d      }t        |||d      }t        ||z        |fS |rt        | d|||||       |||z
  z  }||z
  }|rt        | ||       |rt        | d|||||       |||z
  z  }|rt        | ||       t        | d|||||       |rt        | |||       t        | d|||||       t        | |	      }t        ||z  |z        |fS )
Nr!   r&   r#   r   r   r   r    r   r   )r   r1   rA   r   r   r   r   r   r{   re   rn   rh   r	   )rN   rw   r   rF   rW   r   r   ru   rx   r   r   r   r   standby_idsr   r   r   r   r   s                      r0   ensure_instance_presentr     s    |$L0G */9Y;OPS__K+OY|=TUXddM*?Ij<QRUaaL)/I;G,VK(K -2<'suI"\1K?+M
-h.GU`a-z:+C;
 ..?Y^jkJ*+->>>FJ
JW[]ij=9,,KM)I&+z:FIz:|UY[gh<)++Kv{J7 Z\SWYef VY
<VWFL*j-Y]_kl26jQ	K'+568JJJrH   c           	        t        |      }t        |t        d         |z  }t        |dg      |z  }	t        |t        d         |z  }
|r*||	z  }t        t	        |      ||d      }t        |	      |fS |rt        | d|||||       |	|z  }	|	rt        | |	||       |
|	z  }
t        | d|||
||       t        | |      }t        |	      |fS )Nr!   r   r#   r   r   r   )	r   rA   r   r   r   r   r{   rk   r	   )rN   rw   r   rF   rW   r   ru   rx   r   r   r   r   r   r   s                 r0   ensure_instance_standbyr   8  s     |$L */9Y;OPS__K'+G,VI*?Ij<QRUaaL 9,
-h.GU_gpqI 111FKZVZ\hiIvy*6PQIL 	:z<QUWcd26jQ	?...rH   c	           	     z   |d|fS |t        |      }nt        |      }t        ||      |z  }	||	z
  }
|
sd|fS |r,|j                         }t	        t        |      ||
|      }d|fS |
D ]  }t        | |||        |j                         }t        | |j                         |||
||       t        | |      }d|fS )NF)r7   Tr   )	r1   r   r8   upperr   r   rP   r{   r	   )rN   rw   r   rF   r7   rW   respect_grace_periodru   rx   r   changed_idschanged_instancesr+   r   s                 r0   ensure_instance_healthr   `  s     ~o%%(9<()/6B\QI*Ko%%-h.GU`iop&&&" PV[&:NOP\\^F
JUY[gh26jQ###rH   c           	        |d|fS |t        |      }nt        |      }t        ||      |z  }||z
  }	|	sd|fS |rt        t	        |      ||	|      }
d|
fS t        | |	||       |rdnd}t        | ||||	||       t        | |      }d|fS )NF)r;   T	ProtectedNotProtectedr   )r1   r   r<   r   r   rY   r{   r	   )rN   rw   r   rF   r;   rW   ru   rx   r   r   r   rv   r   s                r0   ensure_instance_protectionr     s     o%%(9<(-ozJ\YI*Ko%%-h.GU`mwx&&&V[*jI%K>Ez:{DR^_26jQ###rH   c
                    |dk(  rt        | ||||xs g |||	      S |dk(  rt        | ||||xs g |||	      S |t        |      }|dk(  rt        | ||||||||		      S |dk(  rt	        | ||||||||		      S d|fS )NstandbydetachedattachedpresentF)r   r   r1   r   r   )
rN   rw   r   rF   rv   rW   purge_instancesr   ru   rx   s
             r0   ensure_instance_poolr     s     	&B&	
 		
 
%B&	
 		
 (9
'&

 
	
 	&&

 
	
 /!!rH   c                n   t        | j                  d            }t        |      }||z
  }|rt        d| d| d    d      t	        |t
        d         }t	        |t
        d         }t	        |d	g      }||z
  |z
  |z
  }|rt        d| d
      |r!| j                  d      st        d| d      y )NrW   zUnable to place instance(s) (z>) into Standby - instances not attached to AutoScaling Group (rF   )messager$   r!   r   zU) into Standby - instances not in a state that can transition to Standby or InServiceru   Unable to plance instances (zB) into Standby - currently in a pending state and wait is disabled)r   r-   r1   r   rA   r   )	paramsr.   rW   r   r   r   r   r   bad_idss	            r0   _validate_standby_conditionsr     s   vzz.12L	*G(K%3K=@~  @F  GS  @T  U  UV  W
 	

 *)Y{5KLK))Yy5IJK'	K=AI#k1I=G%3G9  =R  S
 	
 6::f-%2;-  @B  C
 	
 rH   c                   ddd| d      }| d   t        d| d          t        | j                  d            }t        |t        d	   t        d
   z         }||z  r'| j                  d      st        d| d||z   d      y )Ndetach	terminate)r   
terminatedrv   r7   z,Unable to set instance health when state is r   rW   r!   r#   ru   z
Unable to z instances (z3) currently in a pending state and wait is disabled)r   r   r-   rA   r   )r   r.   target_verbrW   r   s        r0   _validate_remove_conditionsr     s    '{CF7OTKh#%0\]cdk]l\m.noovzz.12L))Yy5IIV`La5abKl"FJJv,>% \+:T9U  VI  J
 	
 rH   c                |   t        | j                  d      xs g       }t        |t        d         |z  }t        |t        d         |z  }t        |t        d         |z  }|rt	        d| d      | j                  d      s9|r$| j                  d	      d
k(  rt	        d| d      |rt	        d| d      y y )NrW   r(   r#   r%   zUnable to attach instances (zR) to AutoScaling group - instances not in a state that can transition to InServicer   ru   rv   r   r   z@) into Service - currently entering standby and wait is disabledzA) to AutoScaling group - currently detaching and wait is disabled)r   r-   rA   r   r   )r   r.   rW   r   r   r   s         r0   _validate_attach_conditionsr      s    vzz.17R8L .i>9RSVbbO))Yz5JKlZK+Iy7MNQ]]M%2?2C  DV  W
 	
 ::f6::g.);)6{m  DD  E  )6{m  DE  F   rH   c                x    | d   dv rt        | |       | d   dk(  rt        | |       | d   dv rt        | |       y )Nrv   )r   r   r   )r   r   )r   r   r   )r   r.   s     r0   validate_paramsr   9  sI    g44#FI6g)#$VY7g11#FI6
rH   c                   | j                  dt        j                               }t        || j                  d         }t        | j                  |       t        |      }t        || j                  || j                  d   | j                  d   | j                  d   | j                  d   | j                  d   | j                  d	   | j                  d
   
      \  }}t        || j                  || j                  d   | j                  d   | j                  d   | j                  d	   | j                  d
         \  }}t        || j                  || j                  d   | j                  d   | j                  d   | j                  d   | j                  d	   | j                  d
   	      \  }}|xs |xs |}||d}| j                  r$t        t        |      t        |            |d<   ||d<   ||d<   ||d<    | j                  di | y )Nautoscaling)retry_decoratorrF   r   rv   rW   r   r   ru   rx   )	rw   r   rF   rv   rW   r   r   ru   rx   r;   )rw   r   rF   r;   rW   ru   rx   r7   r   )rw   r   rF   r7   rW   r   ru   rx   )changedauto_scaling_instances)r   )beforeafterdiffchanged_poolchanged_protectionchanged_health )rN   r   jittered_backoffr	   r   r   r   r   rw   r   r   _diffrE   	exit_json)	modulerN   r   r.   r   r   r   r   results	            r0   dor   D  s   ]]=(:S:S:U]VF/6==Q]C^_OFMM?3)I2$$!==.mmG$]]>2&78#)==1M#N]]6"]]>2L) %?$$!==.==.]]>2]]6"]]>2	%!	 !7$$!==.}}X&]]>2#]]+AB]]6"]]>2
!NI B0BNG IFF||?i8
v
 *F>#5F -FFvrH   c                    t        t        dd      t        dg dd      t        dd      t        d	d
      t        d	d
      t        dddg      t        d	d      t        d	      t        d	d      t        dd      
      } dddggdddggdddggg}t        | d|      }	 t        |       y # t        $ r}|j	                  |       Y d }~y d }~ww xY w)NstrT)typerequired)r   r   r   r   r   r   )r   choicesdefaultrV   )r   elementsr   F)r   r   rC   	Unhealthy)r   r   )r   intx   )
rF   rv   rW   r   r   r7   r   r;   ru   rx   rv   r   rW   r   r   )argument_specsupports_check_moderequired_if)rE   r   r   r   fail_json_aws_error)r   r   r   es       r0   mainr     s    UT2'cmvwv6&%8#'VU#CK(@A!vt<V$vt,uc2M 
, 01	*~./	)n-.K # F&
6
 &""1%%&s   (B4 4	C=CC__main__)r.   r   returnSet[str])r.   r   r7   r   r   r   )r.   r   r;   r   r   r   )r.   r   r?   	List[str]r   r   )rN   r   r+   r   r7   r   rO   r   )rN   r   rW   r   rF   r   rX   r   )rN   r   rW   r   rF   r   r_   r   )rN   r   rW   r   rF   r   )rN   r   rv   r   rw   r   rF   r   rW   r   ru   r   rx   r   r   None)NNN)rN   r   rw   r   r   r   rF   r   rW   r   r   r   ru   r   rx   r   r   #Tuple[bool, AnsibleAWSResourceList])rN   r   rw   r   r   r   rF   r   rW   r   r   r   r   r   ru   r   rx   r   r   r   )rN   r   rw   r   r   r   rF   r   r7   zOptional[str]rW   r   r   r   ru   r   rx   r   r   r   )rN   r   rw   r   r   r   rF   r   r;   zOptional[bool]rW   r   ru   r   rx   r   r   r   )rN   r   rw   r   r   r   rF   r   rv   r   rW   r   r   r   r   r   ru   r   rx   r   r   r   )r   zDict[str, Any]r.   r   r   r   )A
__future__r   DOCUMENTATIONEXAMPLESRETURNtypingcopyr   ?ansible_collections.amazon.aws.plugins.module_utils.autoscalingr   r   r   r	   r
   :ansible_collections.amazon.aws.plugins.module_utils.errorsr   ;ansible_collections.amazon.aws.plugins.module_utils.modulesr   ;ansible_collections.amazon.aws.plugins.module_utils.retriesr   :ansible_collections.amazon.aws.plugins.module_utils.waiterr   TYPE_CHECKINGr   r   r   r   r   r   r   Cansible_collections.amazon.aws.plugins.module_utils.transformationsr   r   r1   r8   r<   rA   rG   rt   r   rP   rY   r`   re   rh   rk   rn   r{   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   __name__r   rH   r0   <module>r      s{   #Un=
~   V c c e b V X P [	ej >I&"##Y/
+M\		5e
ng
 .--.CD  E .--.GH%5=KN[_  I .--.XY%5=KNdh  Z .--.VW  X .--.PQ%5=KNdh  R .--.YZ%5=KNdh  [ .--.cd  e%  	
    
6	)/%)/)/ ,)/ 	)/
 )/ !%)/ )/ )/ ))/X//%//// ,// 	//
 // !%// // // )//d4=%4=4= ,4= 	4=
 4= !%4= 4= 4= 4= )4=n@K%@K@K ,@K 	@K
 @K !%@K @K @K @K )@KF%/%%/%/ ,%/ 	%/
 %/ !%%/ %/ %/ )%/P%$%%$%$ ,%$ 	%$
 %$ %$ %$ %$ %$ )%$P"$%"$"$ ,"$ 	"$
 "$ "$ "$ "$ )"$J@"%@"@" ,@" 	@"
 @" @" @" !%@" @" @" )@"F>"2:z&@ zF rH   