
    _                         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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 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                    t        |        t        |        | d   }d|v rt        |d          n2d|v rt        j                  |d          nt        j                  d      d|v r&|j                  d       t        j                  d       t        |       t        j                  |j                  dg              t        j                         }t        | |       | j!                  |       | j                  d       | j                  d       t#        j$                  | |j&                        }t        j(                  |       |S )	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**,(t++d((6((6))$0D0DE./	    c                 ~    |j                         D ]*  }|| v st        j                  dj                  |             y )Nz${0} only needs to be defined in spec)keysr   r   format)r"   r   keys      r%   r   r   B   s:    YY[c
d{!22
0
7
7
<  r'   c                 `   t        |        t        |       }| d   }d|v r$t        |d          t        |      }|r;||d   d<   n2d|v rt	        j
                  |d          nt        j                  d      t        |       t	        j                  |j                  dg              t        j                         }t        | |       | j                  |       | j                  d       | j                  d       t!        j"                  | |j$                        }t	        j&                  |       |S )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DO,

0
0*, , #4(2 67**,(t++d((6((6))$0@0@A./	r'   c                 d    | j                  d      }|dk7  r|dk7  rt        j                         y y )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                     | d   }|st        j                  d      | j                  d      }|st        j                  d      |j                  di       }t        |v r|t           |d<   ||d<   t
        |v rd|t
           i|d<   i }|r||d	<   i }t        |v r|t           j                         |d
<   t        |v r|t           j                         |d<   t        |v r|t           j                         |d<   |r||d<   |S )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(D*K''(;<BBDJyK''(;<BBDJy;&&'9:@@BJx#D	/r'   c                 :    d| v rt         | d   v r| d   t            S y )Nr<   )_MANAGED_SIDECARS_ANNOTATION)r4   s    r%   r1   r1      s1    h#?8D $M"#?@@	r'   c                 6   | j                  dg       D ]  }t        j                  |        | d   D ]  }t        |        d| v r(| j	                  d      }|D ]  }t        |        || d<   | j                  dg       D ]  }t        j
                  |        y )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 (D)R0o&&7 1r'   c                    | j                  dg       D ]  }t        j                  |        | j                  dg       D ]  }t        j                  |        | j                  dg       D ]  }t        j                  |        y )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                    d| v rJ| j                  d      }t        |       d|v rt        |j                  d            ng }|r||d<   d|i| d<   d| v rt        j                  | d          | j                  dg       }|D ]<  }d|v st        j
                  |j                  d            j                         |d<   > || d<   t        j                  | j                  d	g              y
)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 %5i!""I.D$DO,
((62
%dT#-#:#:
((:
$  %    "$2 67r'   c                     d| v r?d| d   v r8| j                  d      j                  d      }| j                  di       }||d<   y t        j                  d      )NtaskRunTemplateserviceAccountNamer@   serviceAccountz4spec.taskRunTemplate.serviceAccountName is required.)r   
setdefaultr   r   r   sar@   s      r%   r   r      sg    $t$56688%&**+?@bR0h#%h ..<	 r'   c                 h    d| v r.| j                  d      }|| d<   | j                  di       }||d<   y y )Nri   rj   r@   )r   rk   rl   s      r%   r2   r2      sD    T!	&	'BD	z2.H!#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'   