
                             S 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 r	S r
S	 rS
 rSS jrS r " S S\R                  5      rg)z'Spanner database operations API helper.    )
list_pager)apis)waiter)
properties)	resourcesc                     [         R                  " SS5      n[        UR                  5      n[        R
                  R                  U R                  SS9n[        R                  " X4U5      $ )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      s`    !!)T2&!224&,,nn@ 	- 	B# 
W	--    c                 l   [         R                  " SS5      n[         R                  " SS5      n[        R                  R                  U[        R                  R                  R                  R                  U US.SS9nUR                  UR                  5       S9nUR                  R                  U5      $ )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                 l   [         R                  " SS5      n[         R                  " SS5      n[        R                  R                  U[        R                  R                  R                  R                  U US.SS9nUR                  UR                  5       S9nUR                  R                  U5      $ )zGet the specified operation.r	   r
   r   r   r!   r#   )r   r   r$   r   r   r%   r   r&   r'   r(   r)   3SpannerProjectsInstancesBackupsOperationsGetRequestr+   r   Getr-   s          r   r4   r4   5   s    !!)T2&				4	0$  "))..66@@!
 A 	! 	B# 	@@ 	A 	#		5	5	9	9#	>>r   c                     [         R                  R                  U[        R                  R
                  R                  R                  U S.SS9nSR                  UR                  5       5      $ )N)r   r   z$spanner.projects.instances.databasesr!   zmetadata.database:"{}")
r   r   r%   r   r&   r'   r(   r)   formatr+   )r.   databasedatabase_refs      r   BuildDatabaseFilterr9   F   sd    ##))"))..66@@! 8 * 9, 
$	*	*<+D+D+F	GGr   Nc                 v   [         R                  " SS5      n[         R                  " SS5      n[        R                  R                  U S[        R                  R                  R                  R                  0SS9nUR                  UR                  5       US9n[        R                  " UR                  USSS	9$ )
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)r.   	op_filterr   r0   instance_refr1   s         r   ListrH   Q   s    !!)T2&				4	0$##))

))..66@@ . * /, 	@@&&( 	A 	# 
	!	!00	%	
' 'r   c                    [         R                  " SS5      n[         R                  " SS5      n[        R                  R                  U S[        R                  R                  R                  R                  0SS9nSR                  UR                  5       U5      nUR                  US9n[        R                  " UR                   USS	S
9$ )z3List operations on the backup with generic LRO API.r	   r
   r   r;   r!   z{}/backups/{}/operationsr#   r>   r?   r@   )r   r   r$   r   r   r%   r   r&   r'   r(   r)   r6   r+   4SpannerProjectsInstancesBackupsOperationsListRequestr   rD   r   )r.   r/   r   r0   rG   r   r1   s          r   ListGenericrK   e   s    !!)T2&				4	0$##))

))..66@@ . * /, 
$	*	*<+D+D+F	O$AAtAL#		!	!22	%	
' 'r   c                   $    \ rS rSrSrS rS rSrg)r   x   zEAs CloudOperationPoller for polling, but uses the Operation.response.c                     Xl         g Noperation_service)selfrQ   s     r   __init__EmbeddedResponsePoller.__init__{   s    .r   c                     UR                   $ rO   )response)rR   r   s     r   	GetResult EmbeddedResponsePoller.GetResult~   s    r   rP   N)__name__
__module____qualname____firstlineno____doc__rS   rW   __static_attributes__ r   r   r   r   x   s    M/r   r   rO   )r]   apitools.base.pyr   googlecloudsdk.api_lib.utilr   r   googlecloudsdk.corer   r   r   r,   r4   r9   rH   rK   CloudOperationPollerr   r_   r   r   <module>rd      sM    . ( , . * ).B"?"H'('&V88 r   