
                            S r SSKJr  SSKJr  SSKJr  SSK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SKJr  SSKJr  SSKrSSKJr  SSKJr  \R4                  R6                  R8                  R:                  r " S S\R>                  5      r  " S S\R>                  5      r! " S S\R>                  5      r" " S S\#5      r$S r%S r&S r'SOS jr(SOS jr)S r*S  r+S! r,S" r-S# r.S$ r/S%\	R`                  Rb                  S&4S' jr2S( r3S) r4\	R`                  Rb                  4S* jr5\	R`                  Rb                  4S+ jr6\	R`                  Rb                  4S, jr7SPS- jr8SPS. jr9S/ r: SPS0 jr;SPS1 jr<S2 r=S3 r>S4 r?S5 r@S6 rAS7 rBS8 rCS9 rDS: rES; rF      SQS< jrGS= rHS> rIS? rJS@ rKSA rLSB rMSC rNSD rOSE rPSF rQSG rRSH rSSI rTSJ rUSK rVSL rWSM rXSN rYg)Rz;Utilities for parsing arguments to `gcloud tasks` commands.    )absolute_import)division)unicode_literalsN)encoding)base)parser_errors)app)	constants)
exceptions)
properties)	resources)
console_io)http_encoding)filter)mapc                       \ rS rSrSrSrg)NoFieldsSpecifiedError)   zAError for when calling an update method with no fields specified. N__name__
__module____qualname____firstlineno____doc____static_attributes__r       /lib/googlecloudsdk/command_lib/tasks/parsers.pyr   r   )   s    Ir   r   c                       \ rS rSrSrSrg)FullTaskUnspecifiedError-   z<Error parsing task without specifing the queue or full path.r   Nr   r   r   r   r    r    -   s    Dr   r    c                       \ rS rSrSrSrg)"NoFieldsSpecifiedForHttpQueueError1   zQError for calling a create-http-queue method with no override field specified.
  r   Nr   r   r   r   r#   r#   1   s    r   r#   c                   n    \ rS rSrSr\\R                  R                  4S j5       r	S r
S rS rS rSrg	)
QueueUpdatableConfiguration6   z+Data Class for queue configuration updates.c                    U " 5       n0 Ul         0 Ul        0 Ul        0 Ul        0 Ul        SUl        SUl        SUl        SUl        SUl	        U[        R                  :X  a  SSS.Ul         SUl        U$ U[        R                  :X  GaB  U[        R                  R                  :X  aM  SSSSSS	.Ul         S
SS.Ul        SS0Ul        SSSSSSSS.Ul        SUl        SUl        SUl        SUl        U$ U[        R                  R                   :X  a^  SSSSSS	.Ul         SSSS.Ul        SS0Ul        SSSSSSSS.Ul        SS0Ul        SUl        SUl        S Ul        SUl        S!Ul	        U$ SSSSSS	.Ul         SSS".Ul        SS0Ul        SSSSSSSS.Ul        SS0Ul        SUl        SUl        S#Ul        SUl        S!Ul	        U$ )$z>Creates QueueUpdatableConfiguration from the given parameters.NmaxAttemptsmaxRetryDuration)max_attemptsmax_retry_durationretryConfigmaxDoublings
minBackoff
maxBackoffr+   r,   max_doublingsmin_backoffmax_backoffmaxTasksDispatchedPerSecondmaxConcurrentTasks)max_tasks_dispatched_per_secondmax_concurrent_tasksrouting_overrideappEngineRoutingOverrideuriOverride
httpMethodheaderOverrideszoauthToken.serviceAccountEmailzoauthToken.scopezoidcToken.serviceAccountEmailzoidcToken.audiencehttp_uri_overridehttp_method_overridehttp_header_override)http_oauth_service_account_email_overridehttp_oauth_token_scope_override(http_oidc_service_account_email_override!http_oidc_token_audience_override
rateLimitsappEngineHttpTarget
httpTargetmaxDispatchesPerSecondmaxConcurrentDispatchesmaxBurstSizemax_dispatches_per_secondmax_concurrent_dispatchesmax_burst_sizelog_sampling_ratiosamplingRatioappEngineHttpQueuestackdriverLoggingConfig)rM   rN    )retry_configrate_limitsapp_engine_routing_overridehttp_targetstackdriver_logging_configretry_config_mask_prefixrate_limits_mask_prefix'app_engine_routing_override_mask_prefixhttp_target_mask_prefix&stackdriver_logging_config_mask_prefixr
   
PULL_QUEUE
PUSH_QUEUEr   ReleaseTrackALPHABETA)cls
queue_typerelease_trackconfigs       r   FromQueueTypeAndReleaseTrack8QueueUpdatableConfiguration.FromQueueTypeAndReleaseTrack9   s   
 UFFF)+F&F(*F%&*F#%)F"59F2%)F"48F1Y)))' 2f )6f%h Mg 
y++	+	$++11	1)"4+''
 0M$8

  :.
*
 !0"/$
  +8')5&9N6)5&` M_ D--222)"4+''
 *B)B,
  :.
*
 !0"/$
" !/-
) +8')5&9M6)5&8R5P MK *"4+''
 *B)B

  :.
*
 !0"/$
" !/-
) +8')5&9;6)5&8R5Mr   c                 :   U R                   U R                  4U R                  U R                  4U R                  U R
                  4U R                  U R                  4U R                  U R                  4/nU VVs/ s H  u  p#U(       d  M  X#4PM     snn$ s  snnf )zEReturns the initialized configs as a list of (config, prefix) tuples.)
rU   rZ   rV   r[   rW   r\   rX   r]   rY   r^   )selfall_configs_and_prefixesrg   prefixs       r   "_InitializedConfigsAndPrefixTuples>QueueUpdatableConfiguration._InitializedConfigsAndPrefixTuples   s     
		D99:			4778		)	)		5	5	7			4778		(	(		4	4	6  %=$<  V$<  s   ;BBc                     [        5       nUR                  5        H6  nX   nU(       a  SR                  X%5      X4'   OXSU'   X4   U[        U5      '   M8     U$ )zEBuild a map from each arg and its clear_ counterpart to a mask field.z{}.{})dictkeysformat_EquivalentClearArg)rk   rg   rm   fields_to_maskfieldoutput_fields         r   _GetSingleConfigToMaskMapping9QueueUpdatableConfiguration._GetSingleConfigToMaskMapping   sW    VN]l	 'v D ,u3A3Hn(/0  r   c                     [        5       nU R                  5        H%  u  p#UR                  U R                  X#5      5        M'     U$ )zFBuilds mapping from config fields to corresponding update mask fields.)rq   rn   updaterx   )rk   config_to_maskrg   rm   s       r   GetConfigToUpdateMaskMapping8QueueUpdatableConfiguration.GetConfigToUpdateMaskMapping   s?    VN CCED>>vNO Fr   c                 h   [        U R                  R                  5       5      [        U R                  R                  5       5      -   [        U R                  R                  5       5      -   [        U R
                  R                  5       5      -   [        U R                  R                  5       5      -   $ N)listrU   rr   rV   rW   rX   rY   )rk   s    r   
AllConfigs&QueueUpdatableConfiguration.AllConfigs   s    ""'')*T$2B2B2G2G2I-JJ116689:!!&&()* 0055789 :r   r   N)r   r   r   r   r   classmethodr   ra   GArh   rn   rx   r}   r   r   r   r   r   r&   r&   6   s?    3 261B1B1E1EJ JX
:r   r&   c                  j    [         R                  R                  [        5       [        R
                  S9$ )N
collection)r   REGISTRYParse_PROJECTr
   PROJECTS_COLLECTIONr   r   r   ParseProjectr      s.    				!	!j.. 
" 
0 0r   c                 h    [         R                  R                  U S[        0[        R
                  S9$ N
projectsIdparamsr   )r   r   r   r   r
   LOCATIONS_COLLECTION)locations    r   ParseLocationr      s4    				!	!H%// 
" 
1 1r   c                     [         R                  " SU 5      nU(       a0  SR                  UR                  S5      UR                  S5      5      $ U $ )a  Parses a full queue reference and returns an abridged version.

Args:
  queue_string: A full qualifying path for a queue which includes project and
    location, e.g. projects/PROJECT/locations/LOCATION/queues/QUEUE

Returns:
  A shortened string for the full queue ref which has only the location and
  the queue (LOCATION/QUEUE). For example:
    'projects/myproject/location/us-east1/queue/myqueue' => 'us-east1/myqueue'
z@projects\/.*\/locations\/(?P<location>.*)\/queues\/(?P<queue>.*)z{}/{}r   queue)rematchrs   group)queue_stringr   s     r   GetConsolePromptStringr      sF     ((I% >>%++j15;;w3GHH	r   c                    U (       d  gSn [         R                  R                  U [        R                  S9nU$ ! [         R
                   ay    U=(       d    [        R                  " [        5       5      n[        U5      n[         R                  R                  XR                  UR                  S.[        R                  S9n U$ f = f)zParses an id or uri for a queue.

Args:
  queue: An id, self-link, or relative path of a queue resource.
  location: The location of the app associated with the active project.

Returns:
  A queue resource reference, or None if passed-in queue is Falsy.
Nr   )r   locationsIdr   )r   r   r   r
   QUEUES_COLLECTIONRequiredFieldOmittedExceptionr	   ResolveAppLocationr   r   r   r   )r   r   	queue_refapp_locationlocation_refs        r   
ParseQueuer     s     
)	0""((4=4O4O ) QI 
 
	0	0 0Es55lnEL .L""((%<%<&2&>&>@.. ) 0I 
0s   ,: B	CCc                     U(       a  UR                  5       OSn [        R                  R                  U [        R
                  US9$ ! [        R                   a    [        S5      ef = f)zParses an id or uri for a task.N)r   r   zDMust specify either the fully qualified task path or the queue flag.)AsDictr   r   r   r
   TASKS_COLLECTIONr   r    )taskr   r   s      r   	ParseTaskr   ,  sq    !*9&P##D/8/I/I+1 $ 3 3 
	0	0 P
"NP PPs   ,A  A(c                 @    U R                   (       a  U R                   $ S$ )zParses an id for a task.N)task_idargss    r   ParseTaskIdr   8  s    /4/r   c                     U (       d  g[         R                  " SU 5      nU(       aB  UR                  S5      UR                  S5      UR                  S5      UR                  S5      /$ g)z9Parses and retrieves the segments of a full KMS key name.Nzjprojects\/(?P<project>.*)\/locations\/(?P<location>.*)\/keyRings\/(?P<keyring>.*)\/cryptoKeys\/(?P<key>.*)projectr   keyringkey)r   r   r   )kms_key_namer   s     r   ParseFullKmsKeyNamer   =  s`    	
((s% IJIE	  
r   c                    U R                   (       a  U R                   OSnSn[        U R                  5      nUb  US   nU R                  nO~U R                  (       am  U R                  (       a\  U R                   (       aK  SR	                  U R
                  (       a  U R
                  O	[        5       UU R                  U R                  S9n[        5       X!4$ )zParses KMS key value.N   zbprojects/{kms_project_id}/locations/{location_id}/keyRings/{kms_keyring}/cryptoKeys/{kms_key_name})kms_project_idlocation_idkms_keyringr   )r   r   r   r   rs   kms_projectr   )r   r   full_kms_key_nameparse_results       r   ParseKmsUpdateArgsr   P  s    !%D+$T%6%67,
 q/K))




--|  D  D+/+;+;t''$$&&	 D  
&	33r   c                 Z    U R                   (       a  U R                   OSn[        5       nX!4$ )zParses KMS describe args.Nr   r   )r   r   
project_ids      r   ParseKmsDescribeArgsr   k  s#    !%D+z*		  r   c                 X    U R                   (       a  U R                   OSn[        5       U4$ )zParses KMS clear args.Nr   )r   r   s     r   ParseKmsClearArgsr   s  s     !%D+	[	  r   c                     U R                  5       nUS	 [        R                  R                  S U[        R
                  S9nU$ )NqueuesIdr   )r   r   r   r   r
   r   )r   r   r   s      r   ExtractLocationRefFromQueueRefr   z  sG    &Z##))
6i&D&D * F,	r   FTc                 n   U[         R                  R                  :X  aQ  [        XU5      nU(       a  [	        XU5      OSnUR                  [        XX#SS9[        XX#5      [        XX#5      UUS9$ U[         R                  R                  :X  aZ  U(       a  [	        XU5      OSnUR                  [        XX#SS9[        XX#5      [        XX#5      [        XU5      U[        XX#5      S9$ U(       a  [	        XU5      OSnUR                  [        XX#SS9[        XX#5      [        XX#5      [        XU5      US9$ )zParses queue level args.NT)is_alpha)r-   rF   
pullTargetrG   rH   F)r-   rF   rS   rR   rH   type)r-   rF   rS   r:   rH   )r   ra   rb   _ParseAppEngineHttpTargetArgs_ParseHttpTargetArgsQueue_ParseRetryConfigArgs_ParseAlphaRateLimitsArgs_ParsePullTargetArgsrc   _ParseRateLimitsArgs"_ParseStackdriverLoggingConfigArgs_ParseAppEngineHttpQueueArgs_ParseQueueType"_ParseAppEngineRoutingOverrideArgs)r   re   messages	is_updaterf   
http_queueapp_engine_http_targetrX   s           r   ParseCreateOrUpdateQueueArgsr     s{    d''---:( =GTx8D  >>)hD
 -h
 ((N2  
 
 ))...<FTx8D  >>)hE
 ((N!Ch"
 8h
 TxC     =GTx8D  >>)hE
 ((N!Ch"
 "Dh"
    r   c                 $   U R                   b  U R                   R                  OSnU R                   b  U R                   R                  OSnU R                   b  U R                   R                  OSnU R                   b7  U R                   R                  b   U R                   R                  R
                  OSnU R                   b7  U R                   R                  b   U R                   R                  R                  OSnU R                   b7  U R                   R                  b   U R                   R                  R
                  OSnU R                   b7  U R                   R                  b   U R                   R                  R                  OSnUUUUUUUS.$ )zHReturns a pair of each http target attribute and its value in the queue.N)r?   r@   rA   http_oauth_email_overridehttp_oauth_scope_overridehttp_oidc_email_overridehttp_oidc_audience_override)	rH   r;   r<   r=   
oauthTokenserviceAccountEmailscope	oidcTokenaudience)queue_configr?   r@   rA   r   r   r   r   s           r   GetHttpTargetArgsr     s   
 
	 	 	, ))  
	 	 	, ((  
	 	 	, --  
!
!
-%%00< ((<<
   
!
!
-%%00< ((..
   
!
!
-%%//; '';;
   
!
!
-%%//; ''00
   -22#<#<":%@
 r   c                 J   Sn U R                   R                  R                  nU(       a  U$ Sn U R                   R                  R                  nU(       d  gSR                  U5      nXC;   a  UR                  US5      S   $ S$ ! [         a     Nmf = f! [         a     NQf = f)a  Extracts any target (service) if it exists in the appEngineRouting field.

Args:
  job: An instance of job fetched from the backend.
  project: The base name of the project.

Returns:
  The target if it exists in the URL, or if it is present in the service
  attribute of the appEngineRouting field, returns None otherwise.
  Some examples are:
    'alpha.some_project.uk.r.appspot.com' => 'alpha'
    'some_project.uk.r.appspot.com' => None
Nz.{}.r   r   )rG   appEngineRoutingserviceAttributeErrorhostrs   split)jobr   targethost_url	delimiters        r   !ExtractTargetFromAppEngineHostUrlr     s      &	$$55==F M (	&&77<<H 
mmG$),5,A	1	%a	(KtK 
 		 
 		s"    B  B 
BB
B"!B"c           	          U[         R                  R                  :X  a/  UR                  U R                  [        XU5      [        XU5      S9$ UR                  U R                  [        XU5      [        XU5      S9$ )zParses task level args.)scheduleTimepullMessageappEngineHttpRequest)r   r   httpRequest)	r   ra   rb   Taskschedule_time_ParsePullMessageArgs#_ParseAlphaAppEngineHttpRequestArgs_ParseAppEngineHttpRequestArgs_ParseHttpRequestArgs)r   	task_typer   rf   s       r   ParseCreateTaskArgsr   '  s     d''---=='')$8D@X'  ( ( =='';D<DF)$8D	  F Fr   c                 ~    [         R                  X5      n[        XR                  5       SS9(       a  g[	        S5      e)z2Verifies that args are valid for updating a queue.T
clear_argsNz*Must specify at least one field to update.)r&   rh   _AnyArgsSpecifiedr   r   )r   re   rf   updatable_configs       r   CheckUpdateArgsSpecifiedr  8  s<     1MM! t88:tL
KLLr   c                 V   [         R                  X5      n[        XR                  5       SS9nUR	                  5       nU Vs/ s H  oeU   PM	     nn[        U S5      (       a/  U R                  [        R                  :X  a  UR                  S5        [        [        U5      5      $ s  snf )z3Returns the mask fields to use with the given args.Tr  r   )r&   rh   _SpecifiedArgsr   r}   hasattrr   r
   	PULL_TASKappendsortedset)r   re   rf   r  specified_argsargs_to_maskargmasks_fields           r   GetSpecifiedFieldsMaskr  C  s     1MM! "
'')d<. ">>@,.<=nsc"n+=T6tyyI,?,??v	K 	!! >s   B&c                 ~   ^  U 4S jn/ nU(       a  U Vs/ s H  n[        U5      PM     nn[        X1U-   5      $ s  snf )z:Returns the list of known arguments in the specified list.c                    >^  / SQn TR                  T 5      $ ! [        R                   a$    T S;   d  [        U 4S jU 5       5      (       a   ge f = f)a  Wrapper function for Namespace.IsSpecified function.

We need this function to be support being able to modify certain queue
attributes internally using `gcloud app deploy queue.yaml` without exposing
the same functionality via `gcloud tasks queues create/update`.

Args:
  arg: The argument we are trying to check if specified.

Returns:
  True if the argument was specified at CLI invocation, False otherwise.
r>   )rO   clear_max_burst_sizec              3   ,   >#    U  H	  oT;   v   M     g 7fr   r   ).0flagr  s     r   	<genexpr>>_SpecifiedArgs.<locals>._IsSpecifiedWrapper.<locals>.<genexpr>p  s      B"1$#+/s   F)IsSpecifiedr   UnknownDestinationExceptionany)r  http_queue_argsspecified_args_objects   ` r   _IsSpecifiedWrapper+_SpecifiedArgs.<locals>._IsSpecifiedWrapperV  sa    O"..s3344 	:	:c B"1B ? ? s    4AA)rt   r   )r  	args_listr  r  clear_args_listas   `     r   r  r  S  sD    @ /7@Ay!*1-yOA	#%@	AA Bs   :c                 ,    [        [        XU5      5      $ )z@Returns whether there are known arguments in the specified list.)r  r  )r  r!  r  s      r   r  r  |  s    	^1jI	JJr   c                 $    SR                  U 5      $ )Nzclear_{}rs   )r  s    r   rt   rt     s    			3	r   c                 |   U[         R                  :X  a9  [        U SS/US9(       a'  UR                  U R                  S9n[        XU5        U$ U[         R                  :X  a[  [        U / SQUS9(       aH  UR                  U R                  U R                  U R                  U R                  S9n[        XU5        U$ gg)z6Parses the attributes of 'args' for Queue.retryConfig.r+   r,   r  )r*   r1   )r*   r.   r/   r0   N)
r
   r_   r  RetryConfigr,   _AddMaxAttemptsFieldsFromArgsr`   r2   r3   r4   )r   re   r   r   r   rU   s         r   r   r     s     I(((~/CD#,.''00 ( 2L!$h?I((( N#,. ''00''D4D4D## ( %L "$h?. )r   c                     U R                  S5      (       a6  U R                  c  U(       a  SUl        g SUl        g U R                  Ul        g g )Nr+   T)r  r+   unlimitedAttemptsr)   )r   config_objectr   s      r   r)  r)    sE    	n%% 	*.'$&!"&"3"3m &r   c                     U[         R                  :X  a7  [        U SS/US9(       a$  UR                  U R                  U R
                  S9$ gg)5Parses the attributes of 'args' for Queue.rateLimits.r7   r8   r  )r5   r6   N)r
   r`   r  
RateLimitsr7   r8   r   re   r   r   s       r   r   r     s^    I(((@57#,. $($H$H44  6 6. )r   c                     U[         R                  :X  aW  [        U / SQUS9(       aD  [        U S5      (       a  U R                  OSnUR                  U R                  U R                  US9$ gg)r/  rL   r  rO   N)rI   rJ   rK   )r
   r`   r  r  rO   r0  rM   rN   )r   re   r   r   rO   s        r   r   r     s{     I(((
	   't-=>>D #== $ > >#  % %  )r   c                     U[         R                  :w  a+  [        U S/US9(       a  UR                  U R                  S9$ gg)zCParses the attributes of 'args' for Queue.stackdriverLoggingConfig.rP   r  )rQ   N)r
   r_   r  StackdriverLoggingConfigrP   r1  s       r   r   r     sN     I(((34K,,-- - / / L )r   c                 \    U[         R                  :X  a  U(       d  UR                  5       $ gg)z5Parses the attributes of 'args' for Queue.pullTarget.N)r
   r_   
PullTarget)unused_argsre   r   r   s       r   r   r     s)    9'''	   1:'r   c                    [        U S5      (       a  U R                  [        R                  :X  d  U[        R                  :X  a'  U(       d   UR                  R
                  R                  $ UR                  R
                  R                  $ )z/Parses the attributes of 'args' for Queue.type.r   )r  r   r
   r_   r   TypeValueValuesEnumPULLPUSHr1  s       r   r   r     s^     tVi.B.B!BY))))>>--222		+	+	0	00r   c                 j    U[         R                  :X  a  [        XU5      nUc  gUR                  US9$ g)z>Parses the attributes of 'args' for Queue.appEngineHttpTarget.Nr:   )r
   r`   r   AppEngineHttpTargetr   re   r   r9   s       r   r   r     sI    9'''9($''!1 ( 3 3 (r   c                 V   U[         R                  :X  a  [        X5      nU R                  S5      (       a3  UR                  R                  U R                  R                  5       5      OSn[        X5      n[        X5      nUc
  Uc  Uc  Uc  gUR	                  U[        X5      UUUS9$ g)z5Parses the attributes of 'args' for Queue.HttpTarget.r@   N)r;   r=   r<   r   r   )r
   r`   _ParseHttpRoutingOverrideArgsr  
HttpTargetHttpMethodValueValuesEnumr@   upper_ParseHttpTargetOAuthArgs_ParseHttpTargetOidcArgs_ParseHttpTargetHeaderArg)r   re   r   uri_overridehttp_methodoauth_token
oidc_tokens          r   r   r     s    9'''0@L
 233 	55%%++-	/9= 
 ,D;K)$9J 	 1$A   ' (r   c                 b    U[         R                  :X  a  [        XU5      nUR                  US9$ g)z=Parses the attributes of 'args' for Queue.appEngineHttpQueue.r=  N)r
   r`   r   AppEngineHttpQueuer?  s       r   r   r     sB    9'''9( &&!1 '  	 (r   c                     U[         R                  :X  a3  U R                  S5      (       a  UR                  " S0 U R                  D6$ gg)z5Parses the attributes of 'args' for AppEngineRouting.r9   Nr   )r
   r`   r  AppEngineRoutingr9   )r   re   r   s      r   r   r     sD    9'''*++&&?)>)>?? (r   c                 ^    U R                  S5      (       a  [        SSU0U R                  D6$ g)z1Parses the attributes of 'args' for HTTP Routing.r?   r   Nr   )r  _ParseUriOverrider?   r   r   s     r   rA  rA    s0    	)**IhI$2H2HII	r   c           
      N   U(       a)  U R                   R                  UR                  5       5      OSnU(       a  [        U5      OSnU(       a)  U R                   R	                  UR                  5       5      OSnU R                  UUUU R                  US9U R                  US9US9$ )z1Parses the attributes of 'args' for URI Override.N)path)queryParams)schemer   portpathOverridequeryOverrideuriOverrideEnforceMode)UriOverrideSchemeValueValuesEnumrD  int%UriOverrideEnforceModeValueValuesEnumPathOverrideQueryOverride)r   rV  r   rW  rT  querymodeuri_override_enforce_modes           r   rQ  rQ    s     
 00@ 	 T$ 
 @@N  
		((d(3**u*=6 
 
8 8r   c                 r    U[         R                  :X  a#  UR                  [        U 5      U R                  S9$ g )N)payloadtag)r
   r	  PullMessage_ParsePayloadArgsrf  )r   r   r   s      r   r   r   7  s5    )%%%(9$(?TXXNN &r   c           
         U[         R                  :X  a  U R                  (       a  UR                  " S0 U R                  D6OSnU R	                  S5      (       a3  UR
                  R                  U R                  R                  5       5      OSnUR                  X4[        U 5      U R                  [        U UR
                  R                  5      S9$ g)>Parses the attributes of 'args' for Task.appEngineHttpRequest.Nmethod)r   r<   re  relativeUrlheadersr   )r
   APP_ENGINE_TASKroutingrO  r  AppEngineHttpRequestrC  rk  rD  rh  url_ParseHeaderArgHeadersValuer   r   r   ro  rI  s        r   r   r   <  s    )+++59\\!!1DLL1t  !% 0 0 : : 00JJ@D (( !$'TXX ( = = J JL ) M M ,r   c                     U R                  S5      (       a   [        R                  " U R                  SS9nO$U R                  S5      (       a  U R                  nOg [
        R                  " U5      $ )Npayload_fileFbinarypayload_content)r  r   ReadFromFileOrStdinrv  ry  r   Encode)r   re  s     r   rh  rh  J  s\    	n%%,,T->->uMG)**""G			g	&&r   c           
         U[         R                  :X  a  U R                  (       a  UR                  " S0 U R                  D6OSnU R	                  S5      (       a3  UR
                  R                  U R                  R                  5       5      OSnUR                  X4[        U 5      U R                  [        U UR
                  R                  5      S9$ g)rj  Nrk  )r   r<   bodyrelativeUrirm  r   )r
   rn  ro  rO  r  rp  rC  rk  rD  _ParseBodyArgsrelative_urirr  rs  rt  s        r   r   r   T  s    )+++59\\!!1DLL1t  !% 0 0 : : 00JJ@D (( D!t/@/@ ( = = J JL ) M M ,r   c                 n   U[         R                  :X  a  U R                  S5      (       a3  UR                  R	                  U R
                  R                  5       5      OSnUR                  [        XR                  R                  5      U[        U 5      U R                  [        X5      [        X5      S9$ g)z5Parses the attributes of 'args' for Task.httpRequest.rk  N)rm  r<   r}  rq  r   r   )r
   	HTTP_TASKr  HttpRequestrC  rk  rD  rr  rs  r  rq  _ParseOAuthArgs_ParseOidcArgs)r   r   r   rI  s       r   r   r   b  s    )%%% $ 0 0 : : ''AA@D &:&:&G&GH^D%9txx"42 0	   2 2 &r   c                     U R                  S5      (       a   [        R                  " U R                  SS9nO$U R                  S5      (       a  U R                  nOg [
        R                  " U5      $ )N	body_fileFrw  body_content)r  r   rz  r  r  r   r{  )r   r}  s     r   r  r  n  sY    	k""))$..GD''D			d	##r   c                 x    U R                  S5      (       a$  UR                  U R                  U R                  S9$ g )Noauth_service_account_emailr   r   )r  
OAuthTokenr  oauth_token_scoperR  s     r   r  r  x  sC    	344 <<$$  & & r   c                 x    U R                  S5      (       a$  UR                  U R                  U R                  S9$ g )Noidc_service_account_emailr   r   )r  	OidcTokenr  oidc_token_audiencerR  s     r   r  r    sC    	233 ;;))  + + r   c                 x    U R                  S5      (       a$  UR                  U R                  U R                  S9$ g )NrB   r  )r  r  rB   rC   rR  s     r   rE  rE    sC    	ABB JJ22  4 4 r   c                 x    U R                  S5      (       a$  UR                  U R                  U R                  S9$ g )NrD   r  )r  r  rD   rE   rR  s     r   rF  rF    sC    	@AA II77  9 9 r   c                     U R                   (       aD  [        [        U R                   5       VVs0 s H  u  p#X#_M	     nnn[        R                  " XA5      $ g s  snnf r   )headerr   _SplitHeaderArgValuer   DictToAdditionalPropertyMessage)r   headers_valuekvheaders_dicts        r   rr  rr    sH    	[[%()=t{{%KL%KTQAD%KLL33LPP Ls   Ac                 L    U R                  SS5      u  pXR                  5       4$ )N:r   )r   lstrip)header_arg_valuer   values      r   r  r    s%    %%c1-*#	lln	r   c                 z   / nU R                  S5      (       a  [        [        U R                  5       VVs0 s H  u  p4X4_M	     nnn[	        UR                  5       5      nU HO  u  pxUR                  UR                  UR                  5       UR                  5       S9S9n	UR                  U	5        MQ     U$ s  snnf )zCConverts header values into a list of headers and returns the list.rA   )r   r  )r  )
r  r   r  rA   r  itemsHeaderOverrideHeaderencoder
  )
r   r   map_r  r  r  r  r   r  header_overrides
             r   rG  rG    s    	$	,--143L3LMMM   <%%'(E
 //SZZ\H 0 Jo
kk/" 
 
+s   B7c                 $    SR                  U 5      $ )Nz{}sr&  )lease_durations    r   FormatLeaseDurationr    s    	n	%%r   c                     U R                   (       a  gU R                  S5      (       a  SR                  U R                  5      $ g )Nztag_function=oldest_tag()rf  ztag="{}")
oldest_tagr  rs   rf  r   s    r   ParseTasksLeaseFilterFlagsr    s7    	__&	eTXX&& r   c                     [         R                  R                  U R                  S[        0[
        R                  S9R                  5       $ r   )r   r   r   namer   r
   r   SelfLink)r   s    r   QueuesUriFuncr    sA    				!	!jjH%,, 
" 
. /7hj9r   c                     [         R                  R                  U R                  S[        0[
        R                  S9R                  5       $ r   )r   r   r   r  r   r
   r   r  r   s    r   TasksUriFuncr    sA    				!	!
iiH%++ 
" 
- .6XZ8r   c                     [         R                  R                  U R                  S[        0[
        R                  S9R                  5       $ r   )r   r   r   r  r   r
   r   r  r  s    r   LocationsUriFuncr    sA    				!	!
iiH%// 
" 
1 2:<r   r   )F)NNNNNN)Zr   
__future__r   r   r   r   apitools.base.pyr   googlecloudsdk.callioper   r    googlecloudsdk.command_lib.tasksr	   r
   googlecloudsdk.corer   r   r   googlecloudsdk.core.consoler   googlecloudsdk.core.utilr   six	six.movesr   r   VALUEScorer   	GetOrFailr   Errorr   r    r#   objectr&   r   r   r   r   r   r   r   r   r   r   r   ra   r   r   r   r   r   r  r  r  r  rt   r   r)  r   r   r   r   r   r   r   r   r   rA  rQ  r   r   rh  r   r   r  r  r  rE  rF  rr  r  rG  r  r  r  r  r  r   r   r   <module>r     s   B &  ' 	 % ( 1 0 6 * * ) 2 2 
   !!))33JZ-- JEz// E)9)9 
v:& v:r01*6	P0
&46!! ##&&?D;|"LL '+&7&7&:&:F$ ,0+<+<+?+?M *.):):)=)=" &BRK
 
 $).	46%"/!13: " 80O
M'M	2$Q
"&'98<r   