
    VhB                     z    	 d dl Z d dlmZ d dlmZ d Zd ZdefdZ	d Z
d	 Zd
edeeef   fdZy# e$ r Y 3w xY w)    N)Union)camel_dict_to_snake_dictc                     	 |j                  |      }|d   S # t        j                  j                  t        j                  j                  f$ r$}| j                  |d|        Y d }~d   S d }~ww xY w)N)ResourceArnz$Failed to list tags on the resource msgTags)	list_tagsbotocore
exceptionsBotoCoreErrorClientErrorfail_json_aws)modulebackup_clientresourceresponsees        j/home/dcms/DCMS/lib/python3.12/site-packages/ansible_collections/amazon/aws/plugins/module_utils/backup.pyget_backup_resource_tagsr      s    W **x*@ F --x/B/B/N/NO WQ&J8*$UVVFWs    7A4A//A4c                    d}d }| j                         }|j                  dd       }||d   }|D ]  }||d   k(  s|d   c S  |F|r| j                  |      }d}|d   }|D ]  }||d   k(  s|d   c S  |j                  d      }|Ey y )NF	NextTokenBackupPlansListBackupPlanNameBackupPlanId)r   T)list_backup_plansget)clientbackup_plan_namefirst_iteration
next_tokenr   entriesbackup_plans          r   _list_backup_plansr$      s    OJ '')Hk40J,-" 	3K;/?#@@">22	3 
 //*/EH,-" 	3K;/?#@@">22	3 \\+.
 
     r   c                    t        ||      }|sg S 	 |j                  |      }g }	 j                  dd       }t        | ||      }|j                  d|i       |j                  t        d             |D ]  }	d|	v r|	d= |	d	   d
   |	d
<    |S # t        j                  j                  t        j                  j
                  f$ r }| j                  |d|        Y d }~d }~ww xY w# t        j                  j                  t        j                  j
                  f$ r}| j                  |d       Y d }~d }~ww xY w)Nr   zFailed to describe plan r   BackupPlanArntagsz"Failed to get the backup plan tags)ignore_listresponse_metadatar#   r   )r$   get_backup_planr   r   r   r   r   r   r   updateappendr   )
r   r   r   backup_plan_idresultr   snaked_backup_planr   tag_dictvs
             r   get_plan_detailsr4   6   s^   '0@AN	Q''^'D
 J::ot4+FFHEvx() 6v6RS   E!#%& !- 01C D
E
 + --x/B/B/N/NO QQ&>~>N$OPPQ --x/B/B/N/NO JQ$HIIJs.   B 2C* 7C'C""C'*7D>!D99D>c                 J   d}d }g }	 | j                  |      }j                  dd       }||d   S |rA|r	 | j                  ||      }d}|j                  |d          |j                  d      }|r@y y # t        j                  j                  t        j                  j                  f$ r}|j                  |d       Y d }~d }~ww xY w# t        j                  j                  t        j                  j                  f$ r}|j                  |d       Y d }~d }~ww xY w)	NFr'   z$Failed to list AWS backup selectionsr   r   BackupSelectionsList)r   r   T)list_backup_selectionsr   r   r   r   r   r   r.   )r   r   plan_idr    r!   
selectionsr   r   s           r   _list_backup_selectionsr:   V   s-   OJJL00g0F k40J.//
T!88gYc8d (#9:;\\+.
  ++X-@-@-N-NO LQ$JKKL ''33X5H5H5V5VW T$$Q,R$SSTs.   A7 C 77C.CC7D"DD"c                     	 | j                  ||      }xs g S # t        j                  j                  t        j                  j                  f$ r }|j                  |d|        Y d }~Xd }~ww xY w)N)r   SelectionIdzFailed to describe selection r   )get_backup_selectionr   r   r   r   r   )r   r   r8   selection_idr0   r   s         r   _get_backup_selectionr?   t   sx    T,,'|,\ <R --x/B/B/N/NO TQ&CL>$RSSTs    7A2A--A2	plan_nameselection_namec           	      :   g }t        | ||      }|s| j                  d| d       |d   d   }t        || |      }|r|D ]  }t        |t              r4|D ]/  }	|d   |	k(  s|d   }
t        || ||
      }|j                  |       1 t        |t              sX|d   |k(  sa|d   }
|j                  t        || ||
              n+ n)|D ]$  }|d   }
|j                  t        || ||
             & |D ]%  }d|v r|d= d	|v r|d	   D ]  }|d	   |   ||<    |d	= ' |S )
NzThe backup plan z) does not exist. Please create one first.r   r   r/   SelectionNamer<   ResponseMetadataBackupSelection)r4   	fail_jsonr:   
isinstancelistr?   r.   str)r   r   r@   rA   r0   planr8   selection_list	selectionnamer>   selection_infor3   backup_selection_keys                 r   get_selection_detailsrP   |   s   FFFI6D/	{:cde1g&'G,VVWEN' 	I.$/* 6D 1T9'0'?)>vvwXd)en5	6
 .#._-?#,]#;LMM"7Q]"^_	 ( 	XI$]3LMM/VW	X  !"$%!()*;(< U$*+,=*>?S*T&'U ! Mr%   )r   ImportErrortypingr   0ansible.module_utils.common.dict_transformationsr   r   r$   rI   r4   r:   r?   rH   rP    r%   r   <module>rU      sj   	  U/8s @/<&S &%PSUYPYJZ &g  		s   2 ::