
    y1                         d 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
Z G d dej                         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d Zd Zd Z d Z!d Z"y)z7Utilities for the parsing ouput for cloud build v2 API.    )absolute_import)division)unicode_literals)encoding)cloudbuild_util)output_util)yaml)custom_printer_basetektonc                   "    e Zd ZdZd Zd Zd Zy)TektonPrinterz6Print a  PipelineRun or TaskRun in Tekton YAML format.c                     t        j                  |      }d|v sd|v sd|v r(| j                  |      }t        j                  |d      S d|v sd|v r(| j                  |      }t        j                  |d      S y )NpipelineSpecpipelineRefpipelineSpecYamlT
round_triptaskSpectaskRef)r   MessageToDictPublicPRToTektonPRr	   dumpPublicTRToTektonPR)selfinternal_protoprotoyaml_strs       @lib/googlecloudsdk/api_lib/cloudbuild/v2/pipeline_output_util.py	TransformzTektonPrinter.Transform    s    "">2E%E!&((/hYYxD11	u		U 2((/hYYxD11 !3    c                    i i i d}d|v r+t        j                  |j                  d      d      |d   d<   d|v r|j                  d      |d   d<   d|v r t        |j                  d            |d   d<   d|v r!t	        |j                  d            |d   d<   nYd	|v r!t        |j                  d	            |d   d	<   n4d
|v r0|j                  d
      }t        j                  |d      }||d   d
<   d|v r|j                  d      |d   d<   d|v r|j                  d      |d   d<   d|v r"|j                  d      }t        |      |d   d<   d|v r|j                  d      |d   d<   d|v r|j                  d      |d   d<   d|v r"|j                  d      }t	        |      |d   d<   d|v r t        |j                  d            |d   d<   d|v r|j                  d      }||d   d<   d|v rd|j                  d      i|d<   |S )z/Convert a PipelineRun message into Tekton yaml.metadataspecstatusnamepipelinerunr#   annotationsparamsr$   r   r   r   Tr   timeout
workspaces
conditionsr%   	startTimecompletionTimeresolvedPipelineSpecresultschildReferencesserviceAccountserviceAccountNametaskRunTemplate)
r   	ParseNamepop_TransformParams_TransformPipelineSpecTransformRefr	   load_TransformConditions_TransformPipelineRunResults)r   internalpryaml_stringformatted_yamlr,   rpscrss           r   r   z TektonPrinter.PublicPRToTektonPR-   sX    
B *44
,,v
 bnV  &.ll=&Abn]#8-hll8.DEbj!#9
,,~
&$bj  
(	"".x||M/J"Kbj	x	'LL!34kyy>n'5bj#$H&ll95bjx!)l!;bjx<<-j#7
#Cbl< h"*,,{";bl;8#'/||4D'Ebl#$)LL/0c%;C%@bl>"H <
,,y
!!bl9 H$LL*+c(+bl$%8#
-= >b	 Ir    c                    i i i d}d|v r+t        j                  |j                  d      d      |d   d<   d|v r t        |j                  d            |d   d<   d|v r!t	        |j                  d            |d   d<   n$d|v r t        |j                  d            |d   d<   d	|v r|j                  d	      |d   d	<   d
|v r|j                  d
      |d   d
<   d|v r|j                  d      |d   d<   d|v r t        |j                  d            |d   d<   d|v r|j                  d      |d   d<   d|v r|j                  d      |d   d<   d|v r"|j                  d      }t	        |      |d   d<   d|v r t        |j                  d            |d   d<   d|v r t        |j                  d            |d   d<   d|v r|j                  d      |d   d<   |S )z+Convert a TaskRun message into Tekton yaml.r"   r&   taskrunr#   r)   r$   r   r   r*   r+   r3   r,   r%   r-   r.   resolvedTaskSpecstepsr0   sidecars)	r   r5   r6   r7   _TransformTaskSpecr9   r;   _TransformStepStates_TransformTaskRunResults)r   r=   trrtss       r   r   z TektonPrinter.PublicTRToTektonPRg   s    
B *44
,,v
	 bnV 8-hll8.DEbjX1(,,z2JKbj	h	*8<<	+BCbjH&ll95bjx!)l!;bjx')16J)Kbj%&x#7
,,|
$$bl<  h"*,,{";bl;8#'/||4D'Ebl#$X%LL+,c!3C!8bl:(28<<3HIbl7H 8
,,y
!!bl9 X!)j!9bl:Ir    N)__name__
__module____qualname____doc__r   r   r    r    r   r   r      s    >28t1r    r   c                 B   i }d| v rt        | j                  d            |d<   d| v rt        | j                  d            |d<   d| v rt        | j                  d            |d<   d| v rt        | j                  d            |d<   d| v r| j                  d      |d<   |S )z&Convert PipelineSpec into Tekton yaml.r)   tasksr0   finallyTasksfinallyr+   )TransformParamsSpecr6   _TransformPipelineTasks_TransformPipelineResults)pspipeline_specs     r   r8   r8      s    -^1"&&2BCM(]4RVVG_EM'"_8	9JKM)r6rvvn7MNM)R"$&&"6M,	r    c                 \   g }| D ]  }i }d|v r|j                  d      |d<   d|v r|j                  d      |d<   d|v r"|j                  d      j                         |d<   d|v rt        |j                  d            |d<   d|v r|j                  d      |d<   |j                  |        |S )z%Convert ParamsSpecs into Tekton yaml.r&   descriptiontypedefault
propertiesr6   lower_TransformParamValueappend)rY   
param_specpparams       r   rV   rV      s    *aE{eeFmeFmUU=1eM{eeFm))+eFmA~-aeeI.>?eIqEE,/eLe  
r    c                 `   i }d| v rt        | j                  d            |d<   d| v rt        | j                  d            |d<   d| v r| j                  d      |d<   d| v rt        | j                  d            |d<   d| v r| j                  d      |d<   d| v r| j                  d      |d<   |S )z#Convert TaskSpecs into Tekton yaml.r)   rF   stepTemplater0   rG   r+   )rV   r6   _TransformSteps_TransformTaskResults)ts	task_specs     r   rH   rH      s    )^-bffX.>?Ih](9Igr "~ 6In"_0	1BCIi2FF:.IjR ff\2Il	r    c                 H    t        j                  | j                               S )z!Convert OnError into Tekton yaml.)r   SnakeToCamelStringra   )oes    r   _TransformOnErrorrp      s    		+	+BHHJ	77r    c                    g }| D ]w  }d|v rt        |j                  d            |d<   d|v rt        |j                  d            |d<   |j                  |       d|v s[t	        |j                  d            |d<   y |S )zConvert Steps into Tekton yaml.refr)   onError)r9   r6   r7   rc   rp   )rF   r0   steps      r   ri   ri      s    'd} %1d5k4'(:;d8nNN4D)$((9*=>d9o  
.r    c                    g }| D ]  }d|j                  dd      i}d|v rt        |j                  d            |d<   d|v r/|j                  d      j                  d      }t        |      |d<   nd|v r|j                  d      |d<   d|v r|j                  d      |d<   d|v r|j                  d      |d<   d|v r|j                  d      |d<   |j	                  |        |S )	z'Convert PipelineTasks into Tekton yaml.r&   Nr)   r   r   r+   runAfterr*   )getr7   r6   rH   rc   )rk   rS   tasktrl   s        r   rW   rW      s    
%d	&$'(A4$TXXh%78akT((:&**:6i(3a
m	d	XXi(a	lt.aoThhz*a
mDXXi(a	l	LLO   
,r    c                 ,   g }| D ]  }i }d|v r|j                  d      |d<   d|v r|j                  d      |d<   d|v r"|j                  d      j                         |d<   d|v rt        |j                  d            |d<   |j                  |        |S )z)Convert PipelineResults into Tekton yaml.r&   r\   r]   value)r6   ra   _TransformResultValuerc   rsr0   rresults       r   rX   rX      s    'aF{uuV}fVneeM2f]{uuV}**,fVn!|-aeeGn=fWoNN6  
.r    c                 \   g }| D ]  }i }d|v r|j                  d      |d<   d|v r|j                  d      |d<   d|v r"|j                  d      j                         |d<   d|v r|j                  d      |d<   d|v rt        |j                  d            |d<   |j                  |        |S )z%Convert TaskResults into Tekton yaml.r&   r\   r]   r_   r{   r`   r}   s       r   rj   rj   
  s    'aF{uuV}fVneeM2f]{uuV}**,fVnqUU<0f\!|,QUU7^<fWoNN6  
.r    c                     g }| D ]N  }i }d|v r|j                  d      |d<   d|v rt        |j                  d            |d<   |j                  |       P |S )z,Convert PipelineRunResults into Tekton yaml.r&   r{   r6   r|   rc   r}   s       r   r<   r<     s^    'aF{uuV}fVn!|-aeeGn=fWoNN6  
.r    c                 |    g }| D ]4  }d|v rt        |j                  d            |d<   |j                  |       6 |S )z#Convert StepState into Tekton yaml.r0   )rJ   r6   rc   )rF   step_statesss      r   rI   rI   *  sE    +aA~-aeeI.>?a	lq  
r    c                     g }| D ]N  }i }d|v r|j                  d      |d<   d|v rt        |j                  d            |d<   |j                  |       P |S )z(Convert TaskRunResults into Tekton yaml.r&   resultValuer{   r   r}   s       r   rJ   rJ   4  s`    'aF{uuV}fVn-aeeM.BCfWoNN6  
.r    c                     d| v r| j                  d      S d| v r| j                  d      S d| v r| j                  d      S | S )z%Convert ResultValue into Tekton yaml.	stringValarrayVal	objectValr6   vs    r   r|   r|   A  sK    A551_55A55	
(r    c                 Z    d| v r| j                  d      S d| v r| j                  d      S | S )z$Convert ParamValue into Tekton yaml.r   r   r   r   s    r   rb   rb   L  s4    A551_55	
(r    c                     g }| D ]N  }i }d|v r|j                  d      |d<   d|v rt        |j                  d            |d<   |j                  |       P |S )z Convert Params into Tekton yaml.r&   r{   )r6   rb   rc   )rY   r)   re   rf   s       r   r7   r7   U  s^    &aE{eeFmeFm!|+AEE'N;eGn
MM%  
-r    c                 j   g }| D ]  }i }d|v s
|j                  d      |d<   d|v r|j                  d      |d<   d|v r"|j                  d      j                         |d<   d|v r"|j                  d      j                         |d<   d|v s|j                  d      |d<   |j                  |        |S )z$Convert Conditions into Tekton yaml.messagelastTransitionTimer%   r]   reason)r6   
capitalizerc   )csr,   c	conditions       r   r;   r;   b  s    *aI A~UU9-i			"*+%%0D*E	&'	QeeHo88:	(	1EE&M446	&	QeeHo	()$  
r    c                     g }| D ]E  }i }d|v r|j                  d      |d<   d|v r|j                  d      |d<   |j                  |       G |S )z)Convert ChildReferences into Tekton yaml.r&   pipelineTask)r6   rc   )rB   
child_refscr	child_refs       r   _TransformChildRefsr   w  s`    *bI|&&.i"$&&"8ii   
r    c                     i }d| v r| j                  d      |d<   d| v r| j                  d      |d<   d| v rt        | j                  d            |d<   |S )zGConvert a generic reference (step, task, or pipeline) into Tekton yaml.r&   resolverr)   )r6   r7   )rr   r   s     r   r9   r9     s^    &s]WWV_F6N3,F:_'(9:F8	-r    N)#rP   
__future__r   r   r   apitools.base.pyr   !googlecloudsdk.api_lib.cloudbuildr   $googlecloudsdk.api_lib.cloudbuild.v2r   googlecloudsdk.corer	   googlecloudsdk.core.resourcer
   PRINTER_FORMATCustomPrinterBaser   r8   rV   rH   rp   ri   rW   rX   rj   r<   rI   rJ   r|   rb   r7   r;   r   r9   rQ   r    r   <module>r      s    > &  ' % = < $ < {'99 {| &$8
,"&


*
	r    