
    _                         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S jrS rSS j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.databases.operations)
collection)
r   GetClientInstanceEmbeddedResponsePoller'projects_instances_databases_operationsr   REGISTRYParseRelativeNamenamer   WaitFor)	operationmessageclientpollerrefs        9lib/googlecloudsdk/api_lib/spanner/database_operations.pyAwaitr      s`    !!)T2&!446&,,nnB 	- 	D# 
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databasesIdr   paramsr   r   )r   r   GetMessagesModuler   r   Parser   VALUEScoreproject	GetOrFail8SpannerProjectsInstancesDatabasesOperationsCancelRequestRelativeNamer   Cancelinstancedatabaser   r   msgsr   reqs          r   r,   r,   $   s    !!)T2&				4	0$  "))..66@@!!# C 	! 	D# 	EE 	F 	#		7	7	>	>s	CCr   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)   5SpannerProjectsInstancesDatabasesOperationsGetRequestr+   r   Getr-   s          r   r4   r4   4   s    !!)T2&				4	0$  "))..66@@!!
 C 	! 	D# 	BB 	C 	#		7	7	;	;C	@@r   Nc                 ~   [         R                  " SS5      n[         R                  " SS5      n[        R                  R                  U[        R                  R                  R                  R                  U S.SS9nUR                  UR                  5       S-   US9n[        R                  " UR                  USS	S
9$ )zEList operations on the database using the generic operation list API.r	   r
   )r   r   z$spanner.projects.instances.databasesr!   z/operations)r   filter
operationspageSizefieldbatch_size_attribute)r   r   r$   r   r   r%   r   r&   r'   r(   r)   6SpannerProjectsInstancesDatabasesOperationsListRequestr+   r   YieldFromListr   )r.   r/   type_filterr   r0   r   r1   s          r   Listr?   E   s    !!)T2&				4	0$  "))..66@@! 8 	! 	9# 	CCm+ 	D 	# 
	!	!44	%	
' 'r   c                     U S:X  a  gSnU S:X  a  SR                  X5      $ U S:X  a  US-   $ U S:X  a  US	-   $ U S
:X  a  US-   $ g)zFBuilds the filter for the different database operation metadata types.DATABASE zDmetadata.@type:type.googleapis.com/google.spanner.admin.database.v1.DATABASE_RESTOREzC({}OptimizeRestoredDatabaseMetadata) OR ({}RestoreDatabaseMetadata)DATABASE_CREATECreateDatabaseMetadataDATABASE_UPDATE_DDLUpdateDatabaseDdlMetadataDATABASE_CHANGE_QUORUMChangeQuorumMetadataN)format)op_typebase_strings     r    BuildDatabaseOperationTypeFilterrM   Z   sw    
V+""PWW" " !!111%%444((/// )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U(       a  [        XU5      $ UR                  UR                  5       US9n[        R                  " UR                   USSS	9$ )
z>List database operations using the Cloud Spanner specific API.r	   r
   r   zspanner.projects.instancesr!   )parentr6   r7   r8   r9   )r   r   r$   r   r   r%   r   r&   r'   r(   r)   r?   5SpannerProjectsInstancesDatabaseOperationsListRequestr+   r   r=   %projects_instances_databaseOperations)r.   r/   r>   r   r0   instance_refr1   s          r   ListDatabaseOperationsrS   n   s    !!)T2&				4	0$##))

))..66@@ . * /, K00BB&&( 	C 	>#		!	!22	%	
' 'r   c                   $    \ rS rSrSrS rS rSrg)r      zEAs CloudOperationPoller for polling, but uses the Operation.response.c                     Xl         g Noperation_service)selfrY   s     r   __init__EmbeddedResponsePoller.__init__   s    .r   c                     UR                   $ rW   )response)rZ   r   s     r   	GetResult EmbeddedResponsePoller.GetResult   s    r   rX   N)__name__
__module____qualname____firstlineno____doc__r[   r_   __static_attributes__ r   r   r   r      s    M/r   r   rW   )NN)re   apitools.base.pyr   googlecloudsdk.api_lib.utilr   r   googlecloudsdk.corer   r   r   r,   r4   r?   rM   rS   CloudOperationPollerr   rg   r   r   <module>rl      sM    . ( , . * ).D A"'*0('2V88 r   