
    A                         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S
KJr   " S S\R                   5      rg)z1Utilities for building the dataproc clusters CLI.    )absolute_import)division)unicode_literals)dataproc)util)arg_parsers)base)labels_util)logc                   >    \ rS rSrSr\S 5       rS r\S 5       r	Sr
g)JobSubmitter   zSubmit a job to a cluster.c                    [         R                  " U5        UR                  S[        SS9  UR                  S[        SS9  UR                  S[        SS9  UR                  S[        S	S9  UR                  S
S[        R
                  " 5       SS9  UR                  SS9nUR                  SSS9  [         R                  " SS5      R                  U5        g)z Register flags for this command.z--max-failures-per-hourzSpecifies the maximum number of times a job can be restarted per hour in event of failure. Default is 0 (no retries after job failure).)typehelpz--max-failures-totalzSpecifies the maximum total number of times a job can be restarted after the job fails. Default is 0 (no retries after job failure).z--driver-required-memory-mbzThe memory allocation requested by the job driver in megabytes (MB) for execution on the driver node group (it is used only by clusters with a driver node group).z--driver-required-vcoreszThe vCPU allocation requested by the job driver for execution on the driver node group (it is used only by clusters with a driver node group).z--ttlTam  The maximum duration this job is allowed to run before being killed automatically. Specified using a s, m, h, or d (seconds, minutes, hours, or days) suffix. The minimum value is 10 minutes (10m), and the maximum value is 14 days (14d) Run [gcloud topic datetimes] (https://cloud.google.com/sdk/gcloud/reference/topic/datetimes) for information on duration formats.)hiddenr   r   )requiredz	--clusterz*The Dataproc cluster to submit the job to.)r   z5Labels of Dataproc cluster on which to place the job.zcluster-labelsN)	r
   AddCreateLabelsFlagsadd_argumentintr   Durationadd_mutually_exclusive_groupGetCreateLabelsFlagAddToParser)clsparsercluster_placements      9lib/googlecloudsdk/command_lib/dataproc/jobs/submitter.pyArgsJobSubmitter.Args    s    $$V,
!=  ? =  ? %3	   "	   !!#4   ;;T;J""F #  ##? k#$    c           
         [         R                  " U R                  5       5      n[        R                  " 5       nUR
                  (       a  UR
                  OUn[        R                  " XB5      nU R                  U5        SnUR                  b  [        R                  " UR                  U5      nUR                  R                  UR                  UR                  UR                  S9nUR                  R                   R#                  U5      nSn	UR$                  b  SUR$                  ;   a  UR$                  S   n	U R'                  XiUR(                  UR*                  S9U l        U R/                  5         UR                  R1                  UR                  R3                  UR                  UR(                  S9UR                  R5                  UR                  S9S9n
U R7                  UR                  X5        UR8                  (       aE  UR:                  (       a4  UR                  R=                  UR8                  UR:                  S9nXl        UR@                  (       d"  URB                  (       d  URD                  (       a  UR                  RG                  UR@                  (       a  UR@                  OSURB                  (       a  URB                  OSURD                  (       a  [I        URD                  5      S	-   OSS
9nXl%        UR                  RM                  UR                  UR                  UR                  RO                  U
US9S9nUR                  RP                  RS                  U5      n
[T        RV                  RY                  SR[                  U5      5        UR\                  (       d  [        R^                  " UU
USUR                  R`                  Rb                  Rd                  UR                  R`                  Rb                  Rf                  SS9n
[T        RV                  RY                  SR[                  U5      5        U
$ )z9This is what gets called when the user runs this command.N)	projectIdregionclusterNamezcluster-pool)bucket)r#   jobId)r%   )	reference	placement)memoryMbvcoress)maxFailuresPerHourmaxFailuresTotalttl)job	requestId)r#   r$   submitJobRequestzJob [{0}] submitted.zWaiting for job completionT)message
goal_stateerror_statestream_driver_logz Job [{0}] finished successfully.)4dpDataprocReleaseTrackr   GetUniqueIdidParseJobPopulateFilesByTypeclusterParseClustermessages)DataprocProjectsRegionsClustersGetRequestr#   r$   r%   clientprojects_regions_clustersGetcluster_labelsGetStagingDirr'   r&   _staging_dirValidateAndStageFilesJobJobReferenceJobPlacementConfigureJobdriver_required_memory_mbdriver_required_vcoresDriverSchedulingConfigdriverSchedulingConfigmax_failures_per_hourmax_failures_totalr/   JobSchedulingstr
scheduling(DataprocProjectsRegionsJobsSubmitRequestSubmitJobRequestprojects_regions_jobsSubmitr   statusPrintformatasync_WaitForJobTermination	JobStatusStateValueValuesEnumDONEERROR)selfargsr   
request_idjob_idjob_refr>   cluster_refrequestcluster_poolr0   driver_scheduling_configrU   s                r   RunJobSubmitter.RunZ   su   {{4,,./H!!#JTWWZF mmF-GT"G||%%dllH=k!!KK))##!-- L /g
 99==gFgL&	4..	.**>:**w}}T[[ + BD 




##00''w}} 1 >##00T\\0J   LC 	h''3%%$*E*E!)!2!2!I!I11,, "J ". $< !!T%<%<$$22'' "77$$  22%)XXc$((mc!4 3 j "nHH##~~!**;;  < " I #G //
/
/
6
6w
?CJJ+226:;;;&&


.&&00EEJJ''11FFLL "c 
jj9@@HIJr!   c                     [         R                  " X R                  R                  5      Ul        [         R                  " UU R
                  R                  SS9UR                  l        g)z3Add type-specific job configuration to job message.rE   )labels_destN)	r
   ParseCreateArgsrI   LabelsValuelabelsrK   ClusterLabelsValuer)   clusterLabels)r@   r0   rd   s      r   rL   JobSubmitter.ConfigureJob   sL     ,,T<<3K3KLCJ"-"="=00$#&CMMr!   )rG   N)__name__
__module____qualname____firstlineno____doc__classmethodr   rl   staticmethodrL   __static_attributes__ r!   r   r   r      s3    "7% 7%rJX & &r!   r   N)rz   
__future__r   r   r   googlecloudsdk.api_lib.dataprocr   r7   r   googlecloudsdk.callioper   r	   $googlecloudsdk.command_lib.util.argsr
   googlecloudsdk.corer   Commandr   r~   r!   r   <module>r      s7    8 &  ' : 0 / ( < #Q&4<< Q&r!   