
    _                         S r SSKJr  SSKJr  SSKJr  SSKJr  SSKJr  SSK	J
r
  SSK	Jr  SS	KJr  S
rSrSrSrSrSrS rS rS rS rS rS rS rS rS rS rS rg)z7Utilities for the parsing input for cloud build v2 API.    )absolute_import)division)unicode_literals)encoding)cloudbuild_exceptions)client_util)
input_util)logz%cloudbuild.googleapis.com/worker-poolz*cloudbuild.googleapis.com/managed-sidecarsz-cloudbuild.googleapis.com/worker/machine-typez,cloudbuild.googleapis.com/provenance/enabledz,cloudbuild.googleapis.com/provenance/storagez+cloudbuild.googleapis.com/provenance/regionc                    [        U 5        [        U 5        U S   nSU;   a  [        US   5        O6SU;   a  [        R                  " US   5        O[
        R                  " S5      eSU;   a'  UR                  S5        [        R                  " S5        [        U5        [        R                  " UR                  S/ 5      5        [        R                  " 5       n[        X5        U R!                  U5        U R                  S5        U R                  S5        ["        R$                  " XR&                  5      n[        R(                  " U5        U$ )	z2Convert Tekton yaml file into PipelineRun message.specpipelineSpecpipelineRefz(PipelineSpec or PipelineRef is required.	resourcesz{PipelineResources are dropped because they are deprecated: https://github.com/tektoncd/pipeline/blob/main/docs/resources.mdparamskind)_VersionCheck_MetadataTransform_PipelineSpecTransformr	   RefTransformr   InvalidYamlErrorpopr
   warning$_ServiceAccountTransformPipelineSpecParamDictTransformgetr   GetMessagesModule_CheckSpecKeysupdater   DictToMessagePipelineRunUnrecognizedFields)datar   messagesschema_messages       ?lib/googlecloudsdk/api_lib/cloudbuild/v2/pipeline_input_util.pyTektonYamlDataToPipelineRunr&   !   s   T	f$t4/0D/0

0
024 4 DHH[KK	KL 't,2 67**,(++d((6((6))$0D0DE./	    c                     UR                  5        H-  nX ;   d  M
  [        R                  " SR                  U5      5      e   g )Nz${0} only needs to be defined in spec)keysr   r   format)r"   r   keys      r%   r   r   B   s8    YY[c
{!22
0
7
7
<  r'   c                 x   [        U 5        [        U 5      nU S   nSU;   a(  [        US   5        [        U5      nU(       a  X2S   S'   O6SU;   a  [        R
                  " US   5        O[        R                  " S5      e[        U5        [        R                  " UR                  S/ 5      5        [        R                  " 5       n[        X5        U R                  U5        U R                  S5        U R                  S5        [         R"                  " XR$                  5      n[        R&                  " U5        U$ )z.Convert Tekton yaml file into TaskRun message.r   taskSpecmanagedSidecarstaskRefz TaskSpec or TaskRef is required.r   r   )r   r   _TaskSpecTransform_MetadataToSidecarr	   r   r   r    _ServiceAccountTransformTaskSpecr   r   r   r   r   r   r   r   r   TaskRunr!   )r"   metadatar   managed_sidecarsr#   r$   s         r%   TektonYamlDataToTaskRunr6   J   s   %(	f$4tJ'()(3,<:()DDO,

0
0*, , #4(2 67**,(++d((6((6))$0@0@A./	r'   c                 j    U R                  S5      nUS:w  a  US:w  a  [        R                  " 5       eg g )N
apiVersionztekton.dev/v1ztekton.dev/v1beta1)r   r   TektonVersionError)r"   api_versions     r%   r   r   h   s8    &+O#7K(K

2
2
44 )L#r'   c                 :   U S   nU(       d  [         R                  " S5      eU R                  S5      nU(       d  [         R                  " S5      eUR                  S0 5      n[        U;   a  U[           US'   X1S'   [
        U;   a  SU[
           0US'   0 nU(       a  XAS	'   0 n[        U;   a  U[           R                  5       US
'   [        U;   a  U[           R                  5       US'   [        U;   a  U[           R                  5       US'   U(       a  XQS'   U$ )z)Helper funtion to transform the metadata.r   zspec is empty.r4   zMetadata is missing in yaml.annotations
workerPoolmachineTypeworkersecurityenabledstorageregion
provenance)
r   r   r   r   _WORKER_POOL_ANNOTATION_MACHINE_TYPE_PROVENANCE_ENABLEDupper_PROVENANCE_STORAGE_PROVENANCE_REGION)r"   r   r4   r<   r@   rD   s         r%   r   r   n   s   	f$	

0
01A
BBXXj!(	

0
01O
PP]B/++$%<=D#}k!#[%?@DN(*K''(;<BBDJyK''(;<BBDJy;&&'9:@@BJx#	/r'   c                 B    SU ;   a  [         U S   ;   a  U S   [            $ g )Nr<   )_MANAGED_SIDECARS_ANNOTATION)r4   s    r%   r1   r1      s1    h#?8D $M"#?@@	r'   c                 L   U R                  S/ 5       H  n[        R                  " U5        M     U S    H  n[        U5        M     SU ;   a)  U R	                  S5      nU H  n[        U5        M     X0S'   U R                  S/ 5       H  n[        R
                  " U5        M     g )Nr   tasksfinallyfinallyTasksresults)r   r	   ParamSpecTransform_TaskTransformr   PipelineResultTransform)r   
param_spectaskfinally_taskspipeline_results        r%   r   r      s    HHXr*j!!*- +7md4 $HHY'MT ()R0o&&7 1r'   c                    U R                  S/ 5       H  n[        R                  " U5        M     U R                  S/ 5       H  n[        R                  " U5        M     U R                  S/ 5       H  n[        R                  " U5        M     g )Nr   rQ   steps)r   r	   rR   TaskResultTransformTaskStepTransform)r   rU   task_result	task_steps       r%   r0   r0      sk    HHXr*j!!*- +XXi,k"";/ -88GR(i  + )r'   c                    SU ;   aP  U R                  S5      n[        U5        SU;   a  [        UR                  S5      5      O/ nU(       a  X!S'   SU0U S'   SU ;   a  [        R                  " U S   5        U R                  S/ 5      nU HA  nSU;   d  M  [        R
                  " UR                  S5      5      R                  5       US'   MC     X0S'   [        R                  " U R                  S	/ 5      5        g
)zTransform task message.r-   r4   r.   r/   whenoperatorexpressionOperatorwhenExpressionsr   N)	r   r0   r1   r	   r   CamelToSnakerH   r   r   )rV   	task_specr5   whensr`   s        r%   rS   rS      s     4$Iy!&0I&= *j!#CE %5!""I.D$DO,
((62
%dT#-#:#:
((:
$  %    "2 67r'   c                     SU ;   a@  SU S   ;   a7  U R                  S5      R                  S5      nU R                  S0 5      nXS'   g [        R                  " S5      e)NtaskRunTemplateserviceAccountNamer@   serviceAccountz4spec.taskRunTemplate.serviceAccountName is required.)r   
setdefaultr   r   r   sar@   s      r%   r   r      se    $t$56688%&**+?@bR0h#% ..<	 r'   c                 h    SU ;   a,  U R                  S5      nXS'   U R                  S0 5      nXS'   g g )Nri   rj   r@   )r   rk   rl   s      r%   r2   r2      s@    T!	&	'B	z2.H!#	 "r'   N)__doc__
__future__r   r   r   apitools.base.pyr   !googlecloudsdk.api_lib.cloudbuildr   $googlecloudsdk.api_lib.cloudbuild.v2r   r	   googlecloudsdk.corer
   rE   rL   rF   rG   rI   rJ   r&   r   r6   r   r   r1   r   r0   rS   r   r2    r'   r%   <module>rv      s~    > &  ' % C < ; #A K ?D D B B<5@8,8,	$r'   