
    Z                         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Z G d
 de      Z G d de      Z G d de      Z G d de      Zy	)z(Common utilities for deleting resources.    )absolute_import)division)unicode_literals)operations_util)util)base)logNc                   N    e Zd ZdZej
                  j                  fdZd Zd Z	y)ServiceDeletionWaiterzCClass for waiting for synchronous deletion of one or more Services.c                      g | _         || _        y Npending_deletesrelease_trackselfr   s     7lib/googlecloudsdk/command_lib/metastore/delete_util.py__init__zServiceDeletionWaiter.__init__       D&D    c                 N    | j                   j                  t        ||             y)a  Adds a service whose deletion to track.

    Args:
      service_name: str, the relative resource name of the service being deleted
      operation: Operation, the longrunning operation object returned by the API
        when the deletion was initiated
    N)r   append_PendingServiceDeleter   service_name	operations      r   AddPendingDeletez&ServiceDeletionWaiter.AddPendingDelete#   s      	 5lI NOr   c           
      h   d}| j                   D ]H  }	 t        j                  |j                  dj	                  |j
                        | j                         J |S # t        j                  $ rB}d}t        j                  |j
                  ddt        j                  |             Y d}~d}~ww xY w);Polls pending deletions and returns when they are complete.FWaiting for [{}] to be deletedr   Tservicekindis_asyncfailedN)r   operations_api_utilWaitForOperationr   formatr   r   api_utilOperationErrorr	   DeletedResourcesix	text_typer   encountered_errorspending_deletees       r   WaitzServiceDeletionWaiter.Wait-   s    ..%,,$$,33++-,,		. /  $$ %!''==#		% 	%%   AAB1/8B,,B1N
__name__
__module____qualname____doc__r   ReleaseTrackGAr   r   r3    r   r   r   r      s$    K#'#4#4#7#7 'Pr   r   c                       e Zd ZdZd Zy)r   z@Data class holding information about a pending service deletion.c                      || _         || _        y r   )r   r   r   s      r   r   z_PendingServiceDelete.__init__D   s    $DDNr   Nr6   r7   r8   r9   r   r<   r   r   r   r   A   s
    Hr   r   c                   N    e Zd ZdZej
                  j                  fdZd Zd Z	y)FederationDeletionWaiterzFClass for waiting for synchronous deletion of one or more Federations.c                      g | _         || _        y r   r   r   s     r   r   z!FederationDeletionWaiter.__init__L   r   r   c                 N    | j                   j                  t        ||             y)a  Adds a federation whose deletion to track.

    Args:
      federation_name: str, the relative resource name of the federation being
        deleted
      operation: Operation, the longrunning operation object returned by the API
        when the deletion was initiated
    N)r   r   _PendingFederationDeleter   federation_namer   s      r   r   z)FederationDeletionWaiter.AddPendingDeleteP   s"     	 )<>r   c           
      h   d}| j                   D ]H  }	 t        j                  |j                  dj	                  |j
                        | j                         J |S # t        j                  $ rB}d}t        j                  |j
                  ddt        j                  |             Y d}~d}~ww xY w)r   Fr    r!   T
federationr#   N)r   r'   r(   r   r)   rF   r   r*   r+   r	   r,   r-   r.   r/   s       r   r3   zFederationDeletionWaiter.Wait\   s    ..%,,$$,33..0,,		. /  $$ %!**==#		% 	%%r4   Nr5   r<   r   r   rA   rA   I   s#    N#'#4#4#7#7 '
>r   rA   c                       e Zd ZdZd Zy)rD   zCData class holding information about a pending federation deletion.c                      || _         || _        y r   )rF   r   rE   s      r   r   z!_PendingFederationDelete.__init__s   s    *DDNr   Nr?   r<   r   r   rD   rD   p   s
    Kr   rD   )r9   
__future__r   r   r    googlecloudsdk.api_lib.metastorer   r'   r   r*   googlecloudsdk.callioper   googlecloudsdk.corer	   r-   objectr   r   rA   rD   r<   r   r   <module>rP      sT    / &  ' S = ( # 
"F "JF $v $Nv r   