
    -                     n   d Z ddlmZ ddlmZ ddlmZ ddl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dlmZ d ej&                  d      iZej*                   ej,                  ej.                  j0                         G d dej2                                      Zej*                   ej,                  ej.                  j6                         G d de                    Zej*                   ej,                  ej.                  j:                         G d de                    Zy)z$Command for spanner operations list.    )absolute_import)division)unicode_literalsN)backup_operations)database_operations)instance_config_operations)instance_operations)instance_partition_operations)ssd_cache_operations)base)
exceptions)flagsEXAMPLESa          To list Cloud Spanner instance operations for an instance, run:

          $ {command} --instance=my-instance-id --type=INSTANCE

        To list Cloud Spanner backup operations for an instance, run:

          $ {command} --instance=my-instance-id --type=BACKUP

        To list Cloud Spanner database operations for an instance, run:

          $ {command} --instance=my-instance-id --type=DATABASE

        To list Cloud Spanner database operations for a database, run:

          $ {command} --instance=my-instance-id --database=my-database-id --type=DATABASE

        To list Cloud Spanner backup operations for a database, run:

          $ {command} --instance=my-instance-id --database=my-database-id --type=BACKUP

        To list Cloud Spanner backup operations for a backup, run:

          $ {command} --instance=my-instance-id --backup=my-backup-id --type=BACKUP

        To list instance partition operations for an instance partition, run:

          $ {command} --instance=my-instance-id --instance-partition=my-partition-id --type=INSTANCE_PARTITION

        To list instance partition operations for all instance partitions belonging to this instance, run:

          $ {command} --instance=my-instance-id --type=INSTANCE_PARTITION
        c                   *    e Zd ZdZeZed        Zd Zy)List"List the Cloud Spanner operations.c                 .    t        j                  |        yx  Args is called by calliope to gather arguments for this command.

    Please add arguments in alphabetical order except for no- or a clear-
    pair for that argument which can follow the argument itself.
    Args:
      parser: An argparse parser that you can use to add arguments that go on
        the command line after this command. Positional arguments are allowed.
    N)r   AddCommonListArgs)parsers    &lib/surface/spanner/operations/list.pyArgsz	List.ArgsM   s     
F#    c                 v   |j                   r?t        j                  |j                        }t        j                  |j                   |      S |j                  dk(  xsB |j                  dk(  xs1 |j                  dk(  xs  |j                  dk(  xs |j                  dk(  }|j
                  s|j                  dk(  r3|j                         j                  j                  j                  d       |j                  dk(  r4|j                         j                  j                  j                  d       n5|r3|j                         j                  j                  j                  d	       t        j                  |       |j                  d
      r|rt        j                  dd      |j                  dk(  ru|j                  d      rt        j                  dd      |j                  d
      rt        j                  dd      |j                  d      rt        j                  dd      |j                  dk(  r|j                  rJt!        j"                  |j$                  |j                        }t!        j                  |j$                  |      S |j
                  r*t!        j&                  |j$                  |j
                        S t!        j                  |j$                        S |rJt)        j*                  |j                        }t)        j,                  |j$                  |j                  |      S |j
                  r*t!        j&                  |j$                  |j
                        S |j                  r*t)        j                  |j$                  |j                        S |j                  dk(  rt|j/                         j                  d       |j0                  r*t3        j&                  |j$                  |j0                        S t3        j                  |j$                        S t5        j                  |j$                        S )This is what gets called when the user runs this command.

    Args:
      args: an argparse namespace. All the arguments that were provided to this
        command invocation.

    Returns:
      Some value that we want to have printed later.
    DATABASE_RESTOREDATABASEDATABASE_CREATEDATABASE_UPDATE_DDLDATABASE_CHANGE_QUORUMBACKUPa  
            table(
              name.basename():label=OPERATION_ID,
              done():label=DONE,
              metadata.'@type'.split('.').slice(-1:).join(),
              metadata.name.split('/').slice(-1:).join():label=BACKUP,
              metadata.database.split('/').slice(-1).join():label=SOURCE_DATABASE,
              metadata.progress.startTime:label=START_TIME,
              metadata.progress.endTime:label=END_TIME
            )
          a  
            table(
              name.basename():label=OPERATION_ID,
              done():label=DONE,
              metadata.'@type'.split('.').slice(-1:).join(),
              metadata.name.split('/').slice(-1:).join():label=RESTORED_DATABASE,
              metadata.backupInfo.backup.split('/').slice(-1).join():label=SOURCE_BACKUP,
              metadata.progress.startTime:label=START_TIME,
              endtime():label=END_TIME
            )
          a5  
            table(
              name.basename():label=OPERATION_ID,
              metadata.statements.join(sep="
"),
              done():label=DONE,
              metadata.'@type'.split('.').slice(-1:).join(),
              database().split('/').slice(-1:).join():label=DATABASE_ID
            )
          backupz--backup or --typezSThe backup flag cannot be used with the type flag set to a database operation type.INSTANCEdatabasez--database or --typez<The `--database` flag cannot be used with `--type=INSTANCE`.z:The `--backup` flag cannot be used with `--type=INSTANCE`.instance_partitionz--instance-partition or --typezFThe `--instance-partition` flag cannot be used with `--type=INSTANCE`.INSTANCE_PARTITIONa  
            table(
              name.basename():label=OPERATION_ID,
              done():label=DONE,
              metadata.'@type'.split('.').slice(-1:).join(),
              metadata.instancePartition.name.split('/').slice(-1:).join():label=INSTANCE_PARTITION_ID,
              metadata.startTime:label=START_TIME,
              metadata.endTime:label=END_TIME
            )
          )instance_configr   &BuildInstanceConfigOperationTypeFiltertyper   r#   
_GetParseraidisplay_info	AddFormatr   #CheckExclusiveLROFlagsUnderInstanceIsSpecifiedc_exceptionsInvalidArgumentExceptionr%   r   BuildDatabaseFilterinstanceListGenericr    BuildDatabaseOperationTypeFilterListDatabaseOperationsGetDisplayInfor&   r
   r	   )selfargstype_filteris_database_type	db_filters        r   RunzList.RunY   s    
$
K
Kii  (,,T-A-A;OO 			'' 	199
"	199))	1 99--	1 9900  {{dii8+ oo''11 
3 
 yy&& oo''11 
3 
 
 oo''11 3  
--d3 	"'711
%& &
 yyJ			*	%33"JL 	L 
		(	#33 HJ 	J 
		.	/33,"
 	
 yyH	%99MM4==*	 %%dmmY??	 ,,T]]DKKHH##DMM22'HH
))k 778<8CE E {{**4==$++FF}} %%dmmT]]CCyy(( %% 	' 	 
	 	 ,88MM422
 	
 -11$--@@##DMM22r   N)	__name__
__module____qualname____doc__DETAILED_HELPdetailed_helpstaticmethodr   r>    r   r   r   r   F   s$     +-	$ 	$G3r   r   c                   `     e Zd ZdZded    ej                  d      z   iZe fd       Z	 xZ
S )BetaListr   r   z        c                 4    t         t        t          |        yr   )superrH   r   r   	__class__s    r   r   zBetaList.Args   s     
(H"6*r   )r?   r@   rA   rB   rC   textwrapdedentrD   rE   r   __classcell__rL   s   @r   rH   rH      sF     + -
+ohoo ? / -
 	+ 	+r   rH   c                   6     e Zd ZdZe fd       Z fdZ xZS )	AlphaListr   c                     t         t        t          |        t        j                  dddd      j                  |        y)r   FTz+For SSD Cache operations, the SSD Cache ID.)
positionalrequiredhiddentextN)rJ   rR   r   r   SsdCacheAddToParserrK   s    r   r   zAlphaList.Args   s8     
)Y$V,	NN:	
 k&r   c                 |   |j                   r|j                  rt        j                  dd      |j                  rt        j                  dd      |j                         j                  j                  j                  d       t        j                  |j                   |j                        S t        | 5  |      S )r   z--instance or --ssd-cachez8The `--instance` flag cannot be used with `--ssd-cache`.z--type or --ssd-cachez4The `--type` flag cannot be used with `--ssd-cache`.a  
          table(
            name.basename():label=OPERATION_ID,
            done():label=DONE,
            metadata.'@type'.split('.').slice(-1:).join(),
            metadata.startTime:label=START_TIME,
            metadata.endTime:label=END_TIME
          )
        )	ssd_cacher4   r1   r2   r*   r+   r,   r-   r.   r   r   r(   rJ   r>   )r9   r:   rL   s     r   r>   zAlphaList.Run  s     ~~	33'F
 	
 
33#B
 	
 oo''11 3  "&&t~~t7K7KLL7;tr   )r?   r@   rA   rB   rE   r   r>   rO   rP   s   @r   rR   rR      s$     + "! !r   rR   )rB   
__future__r   r   r   rM   googlecloudsdk.api_lib.spannerr   r   r   r	   r
   r   googlecloudsdk.callioper   r   r1   "googlecloudsdk.command_lib.spannerr   rN   rC   DefaultUniverseOnlyReleaseTracksReleaseTrackGAListCommandr   BETArH   ALPHArR   rF   r   r   <module>rg      s    + &  '  < > E > H ? ( > 4   !  "J D%%(()X34 X3 * X3v D%%**++t + , +* D%%++,6 6 - 6r   