
                         &   S r SSKJr  SSKJr  SSKJr  SSK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\R                   5      r " S S\5      r " S S\5      r " S S\5      r " S S\5      r " S S\5      r " S S\5      rg)zTasks for deleting resources.    )absolute_import)division)unicode_literalsN)api_factory)request_config_factory)progress_callbacks)task)logc                   d   ^  \ rS rSrSrSU 4S jjr\R                  S 5       rS	S jr	S r
SrU =r$ )

DeleteTask   z,Base class for tasks that delete a resource.c                 h   > [         TU ]  5         Xl        X l        X0l        UR
                  U l        g)zInitializes task.

Args:
  url (storage_url.StorageUrl): URL of the resource to delete.
  user_request_args (UserRequestArgs|None): Values for RequestConfig.
  verbose (bool): If true, prints status messages. Otherwise, does not print
    anything.
N)super__init___url_user_request_args_verbose
url_stringparallel_processing_key)selfurluser_request_argsverbose	__class__s       >lib/googlecloudsdk/command_lib/storage/tasks/rm/delete_task.pyr   DeleteTask.__init__"   s,     
GI/M#&>>D     c                     [         e)z+Deletes a resource. Overridden by children.NotImplementedErrorr   s    r   _perform_deletionDeleteTask._perform_deletion2   
     r   c                     U R                   (       a8  [        R                  R                  SR	                  U R
                  5      5        U R                  5         U(       a  [        R                  " U5        g g )NzRemoving {}...)	r   r
   statusPrintformatr   r"   r   increment_count_callback)r   task_status_queues     r   executeDeleteTask.execute7   sN    }}	jj'..tyy9:112CD r   c                     [        XR                  5      (       d  [        $ U R                  UR                  :H  =(       a9    U R                  UR                  :H  =(       a    U R
                  UR
                  :H  $ N)
isinstancer   NotImplementedr   r   r   )r   others     r   __eq__DeleteTask.__eq__@   sZ    e^^,,		UZZ 	,##u'?'??	,MMU^^+r   )r   r   r   r   )NTr.   )__name__
__module____qualname____firstlineno____doc__r   abcabstractmethodr"   r+   r2   __static_attributes____classcell__)r   s   @r   r   r      s5    42   E r   r   c                       \ rS rSrSrS rSrg)DeleteFileTaskJ   zTask to delete a file.c                 X    [         R                  " U R                  R                  5        g r.   )osremover   resource_namer!   s    r   r"    DeleteFileTask._perform_deletionM   s    IIdii%%&r    N)r4   r5   r6   r7   r8   r"   r;   rE   r   r   r>   r>   J   s
    'r   r>   c                   B    \ rS rSrSr\R                  S 5       rS rSr	g)CloudDeleteTaskQ   z2Base class for tasks that delete a cloud resource.c                     [         e)zBPerforms an API call to delete a resource. Overridden by children.r   r   clientrequest_configs      r   _make_delete_api_call%CloudDeleteTask._make_delete_api_callT   r$   r   c                     [         R                  " U R                  R                  5      n[        R
                  " U R                  U R                  S9nU R                  X5      $ )N)r   )r   get_apir   schemer   get_request_configr   rM   rJ   s      r   r"   !CloudDeleteTask._perform_deletionY   sN      !1!12F+>>		T%<%<N %%f==r   rE   N)
r4   r5   r6   r7   r8   r9   r:   rM   r"   r;   rE   r   r   rG   rG   Q   s"    : >r   rG   c                       \ rS rSrSrS rSrg)DeleteBucketTaska   zTask to delete a bucket.c                      UR                  U R                  R                  U5        g ! [         a&  nS[	        U5      ;   a  [        U5      " S5      ee S nAff = f)Nz	not emptyz\Bucket is not empty. To delete all objects and then delete bucket, use: gcloud storage rm -r)delete_bucketr   bucket_name	Exceptionstrtype)r   rK   rL   errors       r   rM   &DeleteBucketTask._make_delete_api_calld   sX    49900.A 	E
	"5k1
 	

 	s   &) 
A!AArE   Nr4   r5   r6   r7   r8   rM   r;   rE   r   r   rU   rU   a   s
     r   rU   c                   .    \ rS rSrSr\S 5       rS rSrg)DeleteManagedFolderTasks   z Task to delete a managed folder.c                     U R                   $ zlThe URL of the resource deleted by this task.

Exposing this allows execution to respect containment order.
r   r!   s    r   managed_folder_url*DeleteManagedFolderTask.managed_folder_urlv        99r   c                 z    AUR                  U R                  R                  U R                  R                  5        g r.   )delete_managed_folderr   rY   rC   rJ   s      r   rM   -DeleteManagedFolderTask._make_delete_api_call~   s)    
  !6!6		8O8OPr   rE   N)	r4   r5   r6   r7   r8   propertyrf   rM   r;   rE   r   r   ra   ra   s   s    ( Qr   ra   c                   .    \ rS rSrSr\S 5       rS rSrg)DeleteFolderTask   zTask to delete a folder.c                     U R                   $ rd   re   r!   s    r   
folder_urlDeleteFolderTask.folder_url   rh   r   c                 z    AUR                  U R                  R                  U R                  R                  5        g r.   )delete_folderr   rY   rC   rJ   s      r   rM   &DeleteFolderTask._make_delete_api_call   s)    
..		0G0GHr   rE   N)	r4   r5   r6   r7   r8   rl   rq   rM   r;   rE   r   r   rn   rn      s      Ir   rn   c                       \ rS rSrSrS rSrg)DeleteObjectTask   zTask to delete an object.c                 <    UR                  U R                  U5        g r.   )delete_objectr   rJ   s      r   rM   &DeleteObjectTask._make_delete_api_call   s    
N3r   rE   Nr_   rE   r   r   rw   rw      s
    !4r   rw   )r8   
__future__r   r   r   r9   rA   googlecloudsdk.api_lib.storager   r   "googlecloudsdk.command_lib.storager   (googlecloudsdk.command_lib.storage.tasksr	   googlecloudsdk.corer
   Taskr   r>   rG   rU   ra   rn   rw   rE   r   r   <module>r      s    $ &  ' 
 	 6 A A 9 #( (V'Z '>j >  $Qo Q I I 4 4r   