
    M                     p    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
r
 " S S	\5      rS
 rg)zGSupport library for execution with the container builds submit command.    )absolute_import)division)unicode_literalsN)log)keyboard_interruptc                   $    \ rS rSrSrS rS rSrg)MashHandler   zeMashHandler only invokes its base handler once.

On the third attempt, the execution is hard-killed.
c                 R    SU l         Xl        [        R                  " 5       U l        g )Nr   )_interrupts_base_handler	threadingLock_lock)selfbase_handlers     6lib/googlecloudsdk/command_lib/cloudbuild/execution.py__init__MashHandler.__init__#   s    D%!DJ    c                     U R                      U =R                  S-  sl        U R                  nS S S 5        WS:X  a  U R                  X5        g US:X  a  [        R                  " X5        g g ! , (       d  f       ND= f)N      )r   r   r   r   HandleInterrupt)r   signal_numberstack_frame
interruptss       r   __call__MashHandler.__call__(   se    	
! ##j 
 Q
4	q((D 
 
s   "A--
A;)r   r   r   N)__name__
__module____qualname____firstlineno____doc__r   r   __static_attributes__ r   r   r	   r	      s    
"
Er   r	   c                    ^ ^^ UU U4S jnU$ )a?  Returns a handler to cancel a build.

Args:
  client: base_api.BaseApiClient, An instance of the Cloud Build client.
  messages: Module containing the definitions of messages for Cloud Build.
  build_ref: Build reference. Expects a cloudbuild.projects.locations.builds
    but also supports cloudbuild.projects.builds.
c                   > [         R                  R                  S5        Sn[        TS5      (       a  TR                  nO[        TS5      (       a  TR
                  nSn[        TS5      (       a  TR                  nO[        TS5      (       a  TR                  nSn[        TS5      (       a  TR                  nUb;  SnUR                  X$US	9nTR                  R                  T	R                  US
95        O(TR                  R                  T	R                  X#S95        [         R                  R                  SR                  [        R                   " T5      S95        g)zCancels the build_ref build.

Args:
  unused_signal_number: The signal caught.
  unused_stack_frame: The interrupt stack frame.

Raises:
  InvalidUserInputError: if project ID or build ID is not specified.
zCancelling...N	projectId
projectsIdidbuildsIdlocationsIdz8projects/{project}/locations/{location}/builds/{buildId})projectlocationbuildId)name)r)   r+   zCancelled [{r}].)r)r   statusPrinthasattrr)   r*   r+   r,   r-   formatprojects_locations_buildsCancelCancelBuildRequestprojects_builds%CloudbuildProjectsBuildsCancelRequestsix	text_type)
unused_signal_numberunused_stack_frame
project_idbuild_idr/   cancel_namer1   	build_refclientmessagess
          r   _CancelBuildHandler2GetCancelBuildHandler.<locals>._CancelBuildHandler@   sF    JJ_% Jy+&&&&j	L	)	)''jHy$h	J	'	'##hHy-((&&hNk   Cd&&--

%
% &  ##

8
8" 9 12 JJ'..y1I.JKr   r&   )rD   rE   rC   rF   s   ``` r   GetCancelBuildHandlerrH   7   s    )LT 
r   )r$   
__future__r   r   r   r   googlecloudsdk.corer   googlecloudsdk.core.utilr   r<   objectr	   rH   r&   r   r   <module>rM      s3     N &  '  # 7 
E& E43r   