
                             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
Q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)yaml)zoptions.provenance.enabledzoptions.provenance.storagezoptions.provenance.regionc                     [        U 5        [        U 5        [        R                  " 5       n[        R
                  " XR                  5      n[        R                  " U5        U$ )z3Convert cloudbuild.yaml file into Workflow message.)	_WorkflowTransform_WorkflowValidater   GetMessagesModuler   DictToMessageWorkflowr	   UnrecognizedFields)workflowmessagesschema_messages      ?lib/googlecloudsdk/api_lib/cloudbuild/v2/workflow_input_util.pyCloudBuildYamlDataToWorkflowr   "   sJ    XH**,())(4E4EF./	    c                 f    SU ;  d  SU S   ;  d  SU S   S   ;  a  [         R                  " S5      eg)zCheck that the given workflow has all required fields.

Args:
  workflow: The user-supplied Cloud Build Workflow YAML.

Raises:
  InvalidYamlError: If the workflow is invalid.
optionssecurityserviceAccountzxA service account is required. Specify your user-managed service account using the options.security.serviceAccount fieldN)r   InvalidYamlError)r   s    r   r   r   -   sJ     x	8I.	.	)!4Z!@	@

0
0	C  
Ar   c                    SU ;   a  U R                  S5      U S'   U R                  S/ 5       H  n[        R                  " U5        M     U R                  S/ 5       H  n[        R                  " U5        UR                  SS5      (       d  [
        R                  " S5      eUR                  SS5      S:w  d)  UR                  S	SS
05      R                  S5      S
:w  d  M  [
        R                  " SR                  UR                  S5      5      5      e   SU ;   a(  [        R                  " U R                  S5      SS9U S'   O6SU ;   a  [        R                  " U S   5        O[
        R                  " S5      eU R                  S/ 5       H  n[        U5        M     SU ;   a$  SU S   ;   a  U S   R                  S5      nX@S   S'   [         H  n[        R                  " X5        M     g)zTransform workflow message.triggersworkflowTriggersparamsname z#Workflow parameter name is requiredtypestringdefaultSTRINGzSOnly string are supported for workflow parameters, error at parameter with name: {}pipelineSpecT)
round_trippipelineSpecYamlpipelineRefz(PipelineSpec or PipelineRef is required.
workspacesr   statusstatusUpdateOptionsN)popgetr	   WorkflowTriggerTransformParamSpecTransformr   r   formatr
   dumpRefTransform_WorkspaceBindingTransform_WORKFLOW_OPTIONS_ENUMSSetDictDottedKeyUpperCase)r   workflow_trigger
param_specworkspace_bindingpopped_statusoptions         r   r   r   A   s    8#+<<
#;H ",,'92>''(89 ? LL2.j!!*->>&"%%!22
/  	vx(H4>>)fh%78<<VDP!22$$*F:>>&+A$B  / x#'99^$$H   H]34

0
024 4 $<<b901 : (x8I+>>Y'++H5M1>Y-.'f((: (r   c                 
   U R                  S/ 5       H  n[        U5        M     U R                  S/ 5       H  n[        R                  " U5        M     SU ;   a*  U R	                  S5      nU H  n[        U5        M     X0S'   gg)z Transform pipeline spec message.tasksr    finallyfinallyTasksN)r/   _PipelineTaskTransformr	   r1   r.   )pipeline_specpipeline_taskr9   finally_taskstasks        r   _PipelineSpecTransformrF   n   s     %(("5m=) 6 "%%h3j!!*- 4 -!%%i0MT" $1.!	  r   c                    SU ;   aM  U R                  S5      nUR                  S/ 5       H  n[        R                  " U5        M     0 U S'   XS   S'   O3SU ;   a-  [        R                  " U S   5        U R                  S5      U S'   SU ;   a8  U R                  S/ 5       H  n[        U5        M     U R                  S5      U S'   [        R                  " U R                  S/ 5      5        g)z Transform pipeline task message.taskSpecr    taskRefwhenwhenExpressionsN)r.   r/   r	   r1   r4   _WhenExpressionTransformParamDictTransform)rC   popped_task_specr9   when_expressions       r   rA   rA   ~   s     = $((4&**8R8
##J/ 9 "M*,<*j)M!M)45,00;M)}(,,VR8/ 9'4'8'8'@M#$ 1 1(B ?@r   c                 ~    SU ;   a7  [         R                  " U R                  S5      5      R                  5       U S'   g g )NoperatorexpressionOperator)r	   CamelToSnaker.   upper)rO   s    r   rL   rL      s=    ?",6,C,CJ'-)). () #r   c                     SU ;   a  U R                  S5      n0 U S'   XS   S'   gSU ;   a6  U R                  S5      n0 U S'   SU;   a  UR                  S5      nX0S   S'   ggg)z$Transform workspace binding message.
secretNamesecretvolumevolumeClaimstorageN)r.   )r:   popped_secretpopped_volumerZ   s       r   r5   r5      s     &&%)),7M"$h0=h-$$%))(3M')m$M!!!),g4;&y1 "
 r   N)__doc__
__future__r   r   r   apitools.base.pyr   !googlecloudsdk.api_lib.cloudbuildr   $googlecloudsdk.api_lib.cloudbuild.v2r   r	   googlecloudsdk.corer
   r6   r   r   r   rF   rA   rL   r5    r   r   <module>rd      sO    > &  ' % C < ; $ (*;Z2 A*1r   