
    Vh1                         d dl mZmZmZ eZd dl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mZmZ d	Z ej2                  d
      Z G d de      Zy# e$ r Y 8w xY w# e$ r
ZY dZ[5dZ[ww xY w)    )absolute_importdivisionprint_functionN)reduce)AnsibleOpenshiftModule)create_definitions)CoreException)	to_native)DynamicApiErrorNotFoundErrorForbiddenErrorzimage.openshift.io/triggersz^(?P<path>.*)\[((?P<index>[0-9]+)|\?\(@\.name==[\"'\\]*(?P<name>[a-z0-9]([-a-z0-9]*[a-z0-9])?))c                   \     e Zd Z fdZed        Zd Zed        Zd Z	d Z
d Zd Z xZS )	OKDRawModulec                 ,    t        t        | 
  di | y )N )superr   __init__)selfkwargs	__class__s     j/home/dcms/DCMS/lib/python3.12/site-packages/ansible_collections/community/okd/plugins/module_utils/k8s.pyr   zOKDRawModule.__init__+   s    lD*4V4    c                     | j                   S N)_module)r   s    r   modulezOKDRawModule.module.   s    ||r   c                    g }d}	 t        | j                        }|D ]S  }di d}g }| j                  j                  d      dk7  rd }	|j                  di       j                  d      }
|j                  di       j                  d      }|j                  d	      d
v r^	 | j                  j                  |j                  d	      |j                  dd            }|j                  |
|      j                         }	|j                  d	      d
vr^	 | j                  j                  |j                  d	      |j                  dd            }|j                  |
|      j                         }	|	r}j$                  dk(  r4|j                  di       j                  d      rM| j'                  |	|      }n:|	d   j                  di       j                  t(              r| j+                  |	|      }| j                  j                  d      | j-                  |      }	 | j/                  || j                        }|r!|j9                  dg       j;                  |       ||d   z  }|j                  |       V t=        |      dk(  r | j>                  di |d     | j>                  di |d|id y # t        $ r"}dj                  |      }t	        |      |d }~ww xY w# t        t        f$ r. | j                  |      }||d   z  }|j                  |       Y t        $ rW}| j                  dj                  |j                        |j                   |j                   |j"                         Y d }~wd }~ww xY w# t        $ r d }	Y w xY w# t        $ r}	 |j0                  }n# t2        $ r i }Y nw xY w	 |j4                  j"                  |d<   n# t2        $ r Y nw xY wt7        |      |d<   |r!|j9                  dg       j;                  |       | j                  j                  d      r||d<   n | j                  di | Y d }~d }~ww xY w) NFz'Failed to load resource definition: {0}changedresultstateabsentmetadataname	namespacekind)ProjectProjectRequest
apiVersionv1)r&   api_version)r$   r%   r   z(Failed to retrieve requested object: {0}msgerrorstatusreasonDeploymentConfigspectriggersannotationsvalidater0   r-   warningscontinue_on_errorr.      r   resultsr   ) r   params	Exceptionformatr	   getsvcfind_resourceto_dictr   r   create_project_requestappendr   	fail_jsonbodyr/   r0   r&   resolve_imagestream_triggersTRIGGER_ANNOTATION&resolve_imagestream_trigger_annotationr5   perform_actionr    AttributeError	__cause__r
   
setdefaultextendlen	exit_json)r   r9   r   definitionser-   
definitionr    r6   existingr$   r%   resourceexcr.   s                  r   execute_modulezOKDRawModule.execute_module2   s,   	,,T[[9K
 & U	#J!&"5FH{{w'83!~~j"599&A&NN:r:>>{K	>>&)-JJ#'88#9#9!+!7(2|T(J $: $ $,<<!% $0 $!') !$ >>&)1NN	(#'88#9#9!+!7(2|T(J $: $ $,<<!% $0 $!') ! }}(::%>>&"599*E)-)J)J (**J !,]B//01 &*%P%P$j&
 {{z*6==4,,,ZE& !!*b188Bvi((GNN6"kU	#n w<1DNN(WQZ(NWG8LMN}  	,;BB1EC$!+	,* *>: !!%!<!<Z!H6)#44v. *  J Q Q #! #&**#&::#&:: '  & % (#'(.  ,HHE% E&'kk&8&8E(O% (|e$$Z4;;HE;;??#67&+F7O"DNN+U+!,s   J/ AKAM;N/	K8KK9M8M8!AM33M8;N
	N
	QN$#Q	$N2/Q	1N22Q	6OQ		OQ	OA'Q		Qc                     t        |      D ]H  \  }}|s	t        |D cg c]'  }| j                  |d      |j                  |d      k(  ) c}      sF|c S  yc c}w )zIterates over keys, returns the first object from objects where the value of the key
        matches the value in desired
        TFN)	enumerateallr=   )desiredobjectskeysiitemkeys         r   	get_indexzOKDRawModule.get_index   sY     !) 	GAtKOPCS$'488C+??P 		Ps   ,A
c                 h   dd l }d fd}t        |d   j                  di       j                         v r#|j	                  |d   d   t           xs d      }n8|j	                  |d   j                  dd      j                  t        d            }t        |t              s|S |D ]  }|j                  d      s| j                  |d         }|j                  d	d
      j                  d      }|sN ||      }	 ||      }
|j                  d      r3| j                  d|d   i|	dg      }| j                  d|d   i|
dg      }n&|j                  d      t        |d         x}}nd x}}|||t        |	      k  s|t        |
      k  s ||||dgz    |||dgz                 |S )Nr   c                 X    	 t        t        j                  ||       S # t        $ r Y y w xY wr   )r   operatorgetitemr;   )dfieldss     r   get_from_fieldszLOKDRawModule.resolve_imagestream_trigger_annotation.<locals>.get_from_fields   s.    h..:: s    	))c                 *    | | |d d       |d   <   y )Nr   )rd   re   valuerf   s      r   set_from_fieldszLOKDRawModule.resolve_imagestream_trigger_annotation.<locals>.set_from_fields   s    :?OAvcr{+F2J7r   r#   r4   z[]z{}	fieldPathpath .r$   indeximage)yamlrF   r=   r[   	safe_load
isinstancelistparse_trigger_fieldpathsplitr_   intrM   )r   rR   rQ   rq   rj   r3   triggerparsedrl   existing_containersnew_containersexisting_index	new_indexrf   s                @r   rG   z3OKDRawModule.resolve_imagestream_trigger_annotation   s   		@ J!7!;!;M2!N!S!S!UU~~:&}56HIQTH ~~$]D)'.H (D) 	G{{;'55gk6JKzz&"-33C8*9(D*I'%4Z%FNzz&))-#VF^46IF8* %)NN#VF^4nvh%	  G,8585II599%1i6K)C/- '#n*==+ * $	7'; ; /$,dng5N.N!"-	: r   c                    |j                  di       j                  d      }|d   d   }|j                  di       j                  di       j                  di       j                  dg       }|j                  di       j                  di       j                  di       j                  dg       }t        |      D ]  \  }}|j                  d      dk(  s|j                  d      s.|d   j                  dg       }	|	D ]p  }
| j                  d	|
i|d	g      }| j                  d	|
i|d	g      }|*|(|d   d   d   d   |   d
   }||d   d   d   d   |   d
<   | j                  |d   |D cg c]  }|j                  d       c}dg      }|||   j                  di       j                  d      }|r||d   d   |   d   d<   ||   j                  di       j                  di       }|d   j                  di       }|j                  d      }|j                  d	d      }|j                  d	d      }|xr d|j                         vxr ||k(  }|sZ|d   |d   d   |   d   d   d<   s  |S c c}w )Nr2   r3   template
containerstypeImageChangeimageChangeParamscontainerNamesr$   rp   lastTriggeredImagefromr%   FT)r=   rW   r_   r[   )r   rR   rQ   existing_triggersnew_triggersrz   r{   r\   rx   namesr$   old_container_indexnew_container_indexrp   xr|   existing_imageexisting_fromnew_fromexisting_namespaceexisting_namenew_nameadd_namespaces                          r   rE   z)OKDRawModule.resolve_imagestream_triggers   s   $LL488D!&)*5LL$SR S_Sr"	 	 NN62&SR S_Sr"	 	 $L1 7	HJAw{{6"m3#9   34889I2N! 2HD*...(;fX+' +/..+' ,7/; ( 0 <V D\ R/!!!#
 &+ #6*:6v>|L/!# &*^^ 34=NO23O)*&N
 &1-n= S!4b9 S!56 '
 * !/ 'v.z:1=>QR 4 .n= S!4b9 S_ &
 $++>#?#C#CFB#O-:->->{-K*(5(9(9&%(H#+<<#=. : +8==? B: - 9 &
 ) .;;-G 'v.z:1=>QR &)+a2H7	Hr A Ps   -I7c                     t         j                  |      j                         }|j                  d      rt	        |d         |d<   |S )Nro   )TRIGGER_CONTAINERsearch	groupdictr=   rw   )r   
expressionry   s      r   ru   z$OKDRawModule.parse_trigger_fieldpath(  s>    "))*5??A::g!&/2F7Or   c                    d|d<   di d}| j                   j                  d|d   d      }| j                  s%	 |j                  |      }|j	                         |d<   d|d<   d|d<   |S # t
        $ rV}| j                  d	j                  |j                        |j                  |j                  |j                  
       Y d }~fd }~ww xY w)Nr(   r&   Fr   r)   T)r&   r+   failr    zFailed to create object: {0}r,   r   createmethod)r>   r?   
check_moder   r@   r   rC   r<   rD   r/   r0   )r   rQ   r    rS   k8s_objrT   s         r   rA   z#OKDRawModule.create_project_request.  s    -
6"b188))!z,/Gd * 
 	"//*5#*??#4x  !y#x # 6==chhG**::::	   s   $A) )	C2ACC)__name__
__module____qualname__r   propertyr   rU   staticmethodr_   rG   rE   ru   rA   __classcell__)r   s   @r   r   r   *   sO    5  dOL 
 
7rHTr   r   )
__future__r   r   r   r   __metaclass__rerb   	functoolsr   Gansible_collections.community.okd.plugins.module_utils.openshift_commonr   Eansible_collections.kubernetes.core.plugins.module_utils.k8s.resourcer   Gansible_collections.kubernetes.core.plugins.module_utils.k8s.exceptionsr	   ImportErroransible.module_utils._textr
   kubernetes.dynamic.exceptionsr   r   r   rP   rF   compiler   r   r   r   r   <module>r      s    A @ 	  	 1	  3 BJJe 
W) W+  		  		s"   A 
A* A'&A'*A94A9