
    H                         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  G d
 de	j                         Zy)zUpdate job command.    )absolute_import)division)unicode_literals)dataproc)base)flags)labels_util)logc                   &    e Zd ZdZed        Zd Zy)Updatea  Update the labels for a job.

  Update the labels for a job.

  ## EXAMPLES

  To add the label 'customer=acme' to a job , run:

    $ {command} job_id --update-labels=customer=acme

  To update the label 'customer=ackme' to 'customer=acme', run:

    $ {command} job_id --update-labels=customer=acme

  To remove the label whose key is 'customer', run:

    $ {command} job_id --remove-labels=customer
  c                     t        j                  | j                               }t        j                  |d|j
                         |j                  d      }t        j                  |       y )NupdateT)required)	dpDataprocReleaseTrackr   AddJobResourceArgapi_versionadd_argument_groupr	   AddUpdateLabelsFlags)clsparserr   changess       #lib/surface/dataproc/jobs/update.pyArgszUpdate.Args1   sR    {{3++-.H	FHh.B.BC'''6G$$W-    c           	      z   t        j                  | j                               }|j                  j                  j                         }g }|j                  j                  j                  |j                  j                  |j                  |j                  |j                              }t        j                  j!                  |      j#                  |j                  j$                  j&                  |j(                        }|j*                  r|j-                  d       |}|j/                         |_        |j                  j1                  |j                  |j                  |j                  |dj3                  |            }|j                  j                  j5                  |      }	t7        j8                  |	       |	S )N)	projectIdregionjobIdlabels,)r   r   r    job
updateMask)r   r   r   CONCEPTSr#   Parseclientprojects_regions_jobsGetmessages%DataprocProjectsRegionsJobsGetRequestr   r   r    r	   DiffFromUpdateArgsApplyJobLabelsValuer!   needs_updateappend	GetOrNone'DataprocProjectsRegionsJobsPatchRequestjoinPatchr
   UpdatedResource)
selfargsr   job_refchanged_fieldsorig_joblabels_update_resultupdated_jobrequestreturned_jobs
             r   Runz
Update.Run9   s_   {{4,,./Hmm%%'GN4488??''>>-- 	@ 	!"H '++::4@FF))8??<((H%K-779KGG##~~mm88N+ H -G ??88>>wGL%r   N)__name__
__module____qualname____doc__classmethodr   rA    r   r   r   r      s     & . .r   r   N)rE   
__future__r   r   r   googlecloudsdk.api_lib.dataprocr   r   googlecloudsdk.callioper   #googlecloudsdk.command_lib.dataprocr   $googlecloudsdk.command_lib.util.argsr	   googlecloudsdk.corer
   UpdateCommandr   rG   r   r   <module>rO      s4      &  ' : ( 5 < #;T ;r   