
    Vh#                          G d  d      Z y)c                   n    e Zd Zed        Z	 ddZd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd Zd Zy)StateMachinec                    t        | |      }t        |dj                  |            }t        |dj                  |            }t        |dj                  |            }t        |dj                  |            }t        |dj                  |            }t        |dj                  |            }	t        ||||||	      S )Nz
create_{0}z
delete_{0}zfind_{0}zget_{0}z{0}sz
update_{0}createdeletefindgetlistupdate)getattrformatdict)

connectionservice_name	type_namesessioncreate_functiondelete_functionfind_functionget_functionlist_functionupdate_functions
             q/home/dcms/DCMS/lib/python3.12/site-packages/ansible_collections/openstack/cloud/plugins/module_utils/resource.pydefault_crud_functionsz#StateMachine.default_crud_functions
   s    *l3!'<+>+>y+IJ!'<+>+>y+IJ):):9)EFw	(8(8(CDy)AB!'<+>+>y+IJ"""
 	
    Nc                 ,   dD ]  }t        | |t               |           t        ||      | _        |st        j                  |||      }dD ]!  }t        | dj                  |      ||          # |j                         D ]  \  }}t        | ||        y )N)r   sdkr   r   r   z{0}_function)setattrlocalsr   r   r   r   r   items)	selfr   r   r   r   crud_functionskwargskvs	            r   __init__zStateMachine.__init__   s     D 	*AD!VXa[)	* z<8)@@L)5N G 	GAD.//2N14EF	G LLN 	 DAqD!Q	 r   c           	      r    | j                   |fi |}	|r | j                  ||	|||||fi |S |dk(  r|	s | j                  |||fi |}	|	dfS |dk(  r=|	r; | j                  |	|||fi |}
|
r | j                  |	||
|fi |}	|	t        |
      fS |dk(  r|	r | j                  |	|||fi | y|dk(  r|	syy y NpresentTabsent)NT)NF)_find	_simulate_create_build_update_updatebool_delete)r!   
attributes
check_modestatetimeoutwaitupdateable_attributesnon_updateable_attributesr#   resourcer   s              r   __call__zStateMachine.__call__5   s    4::j3F3!4>>%:w"7";G?EG G Ih#t||JHHHT>!iH'T''*(=(AMEKMF '4<<'64 2*02 T&\))h8DLL:wGGhx (0r   c                      i } j                  d         t        ||nj                               t        ||ng       z
  }t         fd|D              }|r||d<   |S )Nidc              3   \   K   | ]#  }j                  |   |         s	||   f % y wN)	_is_equal).0r$   r2   r9   r!   s     r   	<genexpr>z-StateMachine._build_update.<locals>.<genexpr>h   s8      #?>>*Q-!= 
1#?s   ),resource_attributes)r   setkeysr   )	r!   r9   r2   r7   r8   r#   r   comparison_attributesrB   s	   ```      r   r.   zStateMachine._build_updateY   s     $$Xd^4 (4 &__&( .: , 	 # #?*#? ?
 ,?F()r   c                      | j                   di |}|r6| j                  j                  j                  | j                  |ddg|d      }|S )NactiveerrorstatusrI   failuresr6   	attribute )r   r   r9   wait_for_statusr   )r!   r2   r5   r6   r#   r9   s         r   r-   zStateMachine._creater   sX    '4''5*5xx((889A@HCJ)>ECK 9 MH r   c                     | j                  |d          |r@| j                  j                  j                  |d      D ]  }| j	                  |       y  y y )Nr<   z)Timeout waiting for resource to be absent)r5   message)r   r   utilsiterate_timeoutr+   )r!   r9   r2   r5   r6   r#   counts          r   r1   zStateMachine._delete   s]    Xd^,77C 8   ::j)1 r   c                      t        |t              r"t         fd|j                         D              S t        |t              rt         fd|D              S |S )Nc              3   J   K   | ]  \  }}|j                  |      f  y wr>   _freeze)r@   r$   r%   r!   s      r   rA   z'StateMachine._freeze.<locals>.<genexpr>   s"     Hdaaa1Hs    #c              3   @   K   | ]  }j                  |        y wr>   rV   )r@   r%   r!   s     r   rA   z'StateMachine._freeze.<locals>.<genexpr>   s     4Qa4s   )
isinstancer   	frozensetr    r
   tuple)r!   os   ` r   rW   zStateMachine._freeze   sD    aHaggiHHHa4!444r   c                    t        |d u xr |d u|d uxr |d u g      ry||yt        |t              r3t        |t              r#| j                  |      | j                  |      k(  S t        |t              rgt        |t              rWt        |j                               t        |j                               k7  ry| j                  |      | j                  |      k(  S ||k(  S )NFT)anyrY   r
   rW   r   rC   rD   )r!   abs      r   r?   zStateMachine._is_equal   s    T	+atm+!t)- .9a:a#6<<?dll1o55a:a#61668}AFFH-<<?dll1o55 Avr   c                     dD ]  }||v s| j                  ||         c S  t         | j                  |fi |      }t        |      dkD  r| j	                  d       y t        |      dk(  r|d   S y )N)r<   name   zEFound more than a single resource which matches the given attributes.)msg    )r   r
   _find_matcheslen	fail_json)r!   r2   r#   r$   matchess        r   r+   zStateMachine._find   s       	9AJ))*Q-88	9 )t))*??@w<!NN  FN G\Q1:r   c                 &     | j                   di |S )NrM   )r   )r!   r2   r#   s      r   rf   zStateMachine._find_matches   s    !t!!/J//r   c                     |j                  d      }|r | j                  |d   fi |}|r6| j                  j                  j	                  | j
                  |ddg|d      }|S )NrB   r<   rG   rH   rI   rJ   )r	   r   r   r9   rN   r   )r!   r9   r5   r   r6   r#   rB   s          r   r/   zStateMachine._update   sz    $jj)>?+t++HTN C.ACH xx((889A@HCJ)>ECK 9 MH r   c                     |dk(  r|s | j                   |||fi |}|dfS |dk(  r=|r; | j                  ||||fi |}	|	r | j                  |||	|fi |}|t        |	      fS |dk(  r|ryyr(   )_simulate_creater.   _simulate_updater0   )
r!   r4   r9   r2   r5   r6   r7   r8   r#   r   s
             r   r,   zStateMachine._simulate   s     Ih,t,,Z$ 7/57HT>!iH'T''*(=(A2 +12F 04007F15A9?A T&\))h8 r   c                 0     G d dt               } ||      S )Nc                       e Zd Zd Zy)/StateMachine._simulate_create.<locals>.Resourcec                     | S r>   rM   )r!   argsr#   s      r   to_dictz7StateMachine._simulate_create.<locals>.Resource.to_dict   s    r   N)__name__
__module____qualname__rt   rM   r   r   Resourcerq      s    r   rx   )r   )r!   r2   r5   r6   r#   rx   s         r   rm   zStateMachine._simulate_create   s    	t 	 
##r   c                 f    |j                  d      }|r|j                         D ]
  \  }}|||<    |S )NrB   )r	   r    )	r!   r9   r5   r   r6   r#   rB   r$   r%   s	            r   rn   zStateMachine._simulate_update   sA    $jj)>?+113  1  r   r>   )ru   rv   rw   staticmethodr   r&   r:   r.   r-   r1   rW   r?   r+   rf   r/   r,   rm   rn   rM   r   r   r   r      s[    
 
0 !% ."H2	& 0 .$r   r   N)r   rM   r   r   <module>r{      s   e er   