o
    !d                     @   s   d dl Z G dd deZdS )    Nc                   @   s<   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd ZdS )IAMc                 C   s
   || _ d S )N)
iam_client)selfr    r   Ausr/lib/python3.10/site-packages/awscli/customizations/dlm/iam.py__init__   s   
zIAM.__init__c                 C   0   z
| j j|d W dS  | j jjy   Y dS w )z,Method to verify if a particular role exists)RoleNameFT)r   Zget_role
exceptionsNoSuchEntityException)r   	role_namer   r   r   check_if_role_exists	      zIAM.check_if_role_existsc                 C   r   )z.Method to verify if a particular policy exists	PolicyArnFT)r   
get_policyr
   r   )r   
policy_arnr   r   r   check_if_policy_exists   r   zIAM.check_if_policy_existsc                 C   s   | j j||dS )z?Method to attach LifecyclePolicy to role specified by role_name)r   r	   )r   Zattach_role_policy)r   r   r   r   r   r   attach_policy_to_role   s   zIAM.attach_policy_to_rolec                 C   s   | j j|t|dS )zXMethod to create role with a given role name
            and assume_role_policy
        )r	   ZAssumeRolePolicyDocument)r   Zcreate_rolejsondumps)r   r   Zassume_role_policyr   r   r   create_role_with_trust_policy    s   z!IAM.create_role_with_trust_policyc                 C   sB   | j j|d}| j j||di ddd}|di di S )zvMethod to get the Policy for a particular ARN
        This is used to display the policy contents to the user
        r   PolicyZDefaultVersionId )r   Z	VersionIdZPolicyVersionZDocument)r   r   Zget_policy_versionget)r   ZarnZpol_detZpolicy_version_detailsr   r   r   r   (   s   zIAM.get_policyN)	__name__
__module____qualname__r   r   r   r   r   r   r   r   r   r   r      s    r   )r   objectr   r   r   r   r   <module>   s    