
    t                        S 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  \R,                  R.                  R0                  R2                  r " S S\R6                  5      r " S S\R6                  5      r " S S\R6                  5      r " S S\5      r S r!S r"S r#SLS jr$SLS jr%S r&S r'S r(S r)S  r*S! r+S"\RX                  RZ                  S#4S$ jr.S% r/S& r0\RX                  RZ                  4S' jr1\RX                  RZ                  4S( jr2\RX                  RZ                  4S) jr3SMS* jr4SMS+ jr5S, r6 SMS- jr7SMS. jr8S/ r9S0 r:S1 r;S2 r<S3 r=S4 r>S5 r?S6 r@S7 rAS8 rB      SNS9 jrCS: rDS; rES< rFS= rGS> rHS? rIS@ rJSA rKSB rLSC rMSD rNSE rOSF rPSG rQSH rRSI rSSJ rTSK rUg)Oz;Utilities for parsing arguments to `gcloud tasks` commands.    N)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)"NoFieldsSpecifiedForHttpQueueError.   zQError for calling a create-http-queue method with no override field specified.
  r   Nr   r   r   r   r    r    .   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	)
QueueUpdatableConfiguration3   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)rJ   rK    )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.FromQueueTypeAndReleaseTrack6   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.)
rR   rW   rS   rX   rT   rY   rU   rZ   rV   r[   )selfall_configs_and_prefixesrd   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)rh   rd   rj   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.)rn   rk   updateru   )rh   config_to_maskrd   rj   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)listrR   ro   rS   rT   rU   rV   )rh   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   r^   GAre   rk   ru   rz   r   r   r   r   r   r#   r#   3   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matchrp   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   5  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   rp   kms_projectr   )r   r   full_kms_key_nameparse_results       r   ParseKmsUpdateArgsr   M  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   h  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   p  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   w  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*   rC   
pullTargetrD   rE   F)r*   rC   rP   rO   rE   type)r*   rC   rP   r7   rE   )r   r^   r_   _ParseAppEngineHttpTargetArgs_ParseHttpTargetArgsQueue_ParseRetryConfigArgs_ParseAlphaRateLimitsArgs_ParsePullTargetArgsr`   _ParseRateLimitsArgs"_ParseStackdriverLoggingConfigArgs_ParseAppEngineHttpQueueArgs_ParseQueueType"_ParseAppEngineRoutingOverrideArgs)r   rb   messages	is_updaterc   
http_queueapp_engine_http_targetrU   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=   r>   http_oauth_email_overridehttp_oauth_scope_overridehttp_oidc_email_overridehttp_oidc_audience_override)	rE   r8   r9   r:   
oauthTokenserviceAccountEmailscope	oidcTokenaudience)queue_configr<   r=   r>   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   )rD   appEngineRoutingserviceAttributeErrorhostrp   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   r^   r_   Taskschedule_time_ParsePullMessageArgs#_ParseAlphaAppEngineHttpRequestArgs_ParseAppEngineHttpRequestArgs_ParseHttpRequestArgs)r   	task_typer   rc   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#   re   _AnyArgsSpecifiedr   r   )r   rb   rc   updatable_configs       r   CheckUpdateArgsSpecifiedr  5  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#   re   _SpecifiedArgsr   rz   hasattrr   r   	PULL_TASKappendsortedset)r   rb   rc   r  specified_argsargs_to_maskargmasks_fields           r   GetSpecifiedFieldsMaskr  @  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;   )rL   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>m  s      B"1$#+/s   F)IsSpecifiedr   UnknownDestinationExceptionany)r  http_queue_argsspecified_args_objects   ` r   _IsSpecifiedWrapper+_SpecifiedArgs.<locals>._IsSpecifiedWrapperS  sa    O"..s3344 	:	:c B"1B ? ? s    4AA)rq   r   )r  	args_listr   r  clear_args_listas   `     r   r  r  P  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   y  s    	^1jI	JJr   c                 $    SR                  U 5      $ )Nzclear_{}rp   )r  s    r   rq   rq   ~  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'   r.   )r'   r+   r,   r-   N)
r   r\   r   RetryConfigr)   _AddMaxAttemptsFieldsFromArgsr]   r/   r0   r1   )r   rb   r   r   r   rR   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.r4   r5   r   )r2   r3   N)r   r]   r   
RateLimitsr4   r5   r   rb   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,  rI   r   rL   N)rF   rG   rH   )r   r]   r   r  rL   r-  rJ   rK   )r   rb   r   r   rL   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.rM   r   )rN   N)r   r\   r   StackdriverLoggingConfigrM   r.  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_argsrb   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PUSHr.  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r7   )r   r]   r   AppEngineHttpTargetr   rb   r   r6   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)r8   r:   r9   r   r   )r   r]   _ParseHttpRoutingOverrideArgsr  
HttpTargetHttpMethodValueValuesEnumr=   upper_ParseHttpTargetOAuthArgs_ParseHttpTargetOidcArgs_ParseHttpTargetHeaderArg)r   rb   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.r6   Nr   )r   r]   r  AppEngineRoutingr6   )r   rb   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   r>  r>    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SchemeValueValuesEnumrA  int%UriOverrideEnforceModeValueValuesEnumPathOverrideQueryOverride)r   rS  r   rT  rQ  querymodeuri_override_enforce_modes           r   rN  rN    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_ParsePayloadArgsrc  )r   r   r   s      r   r   r   4  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   r9   rb  relativeUrlheadersr   )r   APP_ENGINE_TASKroutingrL  r  AppEngineHttpRequestr@  rh  rA  re  url_ParseHeaderArgHeadersValuer   r   r   rl  rF  s        r   r   r   9  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   ReadFromFileOrStdinrs  rv  r   Encode)r   rb  s     r   re  re  G  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)rg  Nrh  )r   r9   bodyrelativeUrirj  r   )r   rk  rl  rL  r  rm  r@  rh  rA  _ParseBodyArgsrelative_uriro  rp  rq  s        r   r   r   Q  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.rh  N)rj  r9   rz  rn  r   r   )r   	HTTP_TASKr  HttpRequestr@  rh  rA  ro  rp  r|  rn  _ParseOAuthArgs_ParseOidcArgs)r   r   r   rF  s       r   r   r   _  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_fileFrt  body_content)r  r   rw  r  r  r   rx  )r   rz  s     r   r|  r|  k  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_scoperO  s     r   r  r  u  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_audiencerO  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 )Nr?   r  )r  r  r?   r@   rO  s     r   rB  rB    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 )NrA   r  )r  r  rA   rB   rO  s     r   rC  rC    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   ro  ro    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.r>   )r   r  )r  )
r  r   r  r>   r  itemsHeaderOverrideHeaderencoder  )
r   r   map_r  r  r  r  r   r  header_overrides
             r   rD  rD    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()rc  ztag="{}")
oldest_tagr  rp   rc  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)Vr   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   r^   r   r   r   r   r   r  r  r  r   rq   r   r&  r   r   r   r   r   r   r   r   r   r>  rN  r   r   re  r   r   r|  r  r  rB  rC  ro  r  rD  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   