
    +                         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 d
 Zd Zd Zd ZddZd Z G d de	j&                        Zy)z'Spanner database operations API helper.    )absolute_import)division)unicode_literals)
list_pager)apis)waiter)
properties)	resourcesc                     t        j                  dd      }t        |j                        }t        j
                  j                  | j                  d      }t        j                  |||      S )z!Wait for the specified operation.spannerv1-spanner.projects.instances.backups.operations)
collection)
r   GetClientInstanceEmbeddedResponsePoller%projects_instances_backups_operationsr
   REGISTRYParseRelativeNamenamer   WaitFor)	operationmessageclientpollerrefs        7lib/googlecloudsdk/api_lib/spanner/backup_operations.pyAwaitr      sb    !!)T2&!224&,,nn@ 	- 	B# 
W	--    c                 t   t        j                  dd      }t        j                  dd      }t        j                  j                  |t        j                  j                  j                  j                  | |dd      }|j                  |j                               }|j                  j                  |      S )zCancel the specified operation.r   r   
projectsIdinstancesId	backupsIdr   paramsr   r   )r   r   GetMessagesModuler
   r   Parser	   VALUEScoreproject	GetOrFail6SpannerProjectsInstancesBackupsOperationsCancelRequestRelativeNamer   Cancelinstancebackupr   r   msgsr   reqs          r   r/   r/   '   s    !!)T2&				4	0$  "))..66@@!
 A 	! 	B# 	CC 	D 	#		5	5	<	<S	AAr   c                 t   t        j                  dd      }t        j                  dd      }t        j                  j                  |t        j                  j                  j                  j                  | |dd      }|j                  |j                               }|j                  j                  |      S )zGet the specified operation.r   r   r    r   r$   r&   )r   r   r'   r
   r   r(   r	   r)   r*   r+   r,   3SpannerProjectsInstancesBackupsOperationsGetRequestr.   r   Getr0   s          r   r7   r7   8   s    !!)T2&				4	0$  "))..66@@!
 A 	! 	B# 	@@ 	A 	#		5	5	9	9#	>>r   c                     t         j                  j                  |t        j                  j
                  j                  j                  | dd      }dj                  |j                               S )N)r!   r"   z$spanner.projects.instances.databasesr$   zmetadata.database:"{}")
r
   r   r(   r	   r)   r*   r+   r,   formatr.   )r1   databasedatabase_refs      r   BuildDatabaseFilterr<   I   sd    ##))"))..66@@! 8 * 9, 
$	*	*<+D+D+F	GGr   Nc                    t        j                  dd      }t        j                  dd      }t        j                  j                  | dt        j                  j                  j                  j                  id      }|j                  |j                         |      }t        j                  |j                  |dd	      S )
zList operations on the backup.r   r   r!   spanner.projects.instancesr$   )parentfilter
operationspageSizefieldbatch_size_attribute)r   r   r'   r
   r   r(   r	   r)   r*   r+   r,   3SpannerProjectsInstancesBackupOperationsListRequestr.   r   YieldFromList#projects_instances_backupOperations)r1   	op_filterr   r3   instance_refr4   s         r   ListrK   T   s    !!)T2&				4	0$##))

))..66@@ . * /, 	@@&&( 	A 	# 
	!	!00	%	
' 'r   c                    t        j                  dd      }t        j                  dd      }t        j                  j                  | dt        j                  j                  j                  j                  id      }dj                  |j                         |      }|j                  |      }t        j                  |j                   |dd	
      S )z3List operations on the backup with generic LRO API.r   r   r!   r>   r$   z{}/backups/{}/operationsr&   rA   rB   rC   )r   r   r'   r
   r   r(   r	   r)   r*   r+   r,   r9   r.   4SpannerProjectsInstancesBackupsOperationsListRequestr   rG   r   )r1   r2   r   r3   rJ   r   r4   s          r   ListGenericrN   h   s    !!)T2&				4	0$##))

))..66@@ . * /, 
$	*	*<+D+D+F	O$AAtAL#		!	!22	%	
' 'r   c                       e Zd ZdZd Zd Zy)r   zEAs CloudOperationPoller for polling, but uses the Operation.response.c                     || _         y N)operation_service)selfrR   s     r   __init__zEmbeddedResponsePoller.__init__~   s
    .Dr   c                     |j                   S rQ   )response)rS   r   s     r   	GetResultz EmbeddedResponsePoller.GetResult   s    r   N)__name__
__module____qualname____doc__rT   rW    r   r   r   r   {   s    M/r   r   rQ   )r[   
__future__r   r   r   apitools.base.pyr   googlecloudsdk.api_lib.utilr   r   googlecloudsdk.corer	   r
   r   r/   r7   r<   rK   rN   CloudOperationPollerr   r\   r   r   <module>rb      sT    . &  ' ' , . * ).B"?"H'('&V88 r   