
    3                     R   S r SSKJr  SSKJr  SSKJr  SSKrSSKJr  SSKJ	r	  SSK
Jr  SS	KJr  \R                  \R                  " \R                   R"                  \R                   R$                  \R                   R&                  5       " S
 S\R(                  5      5       5       rg)z+Command for spanner database change quorum.    )absolute_import)division)unicode_literalsN)	databases)apis)base)resource_argsc                   V    \ rS rSrSrS\R                  " S5      0r\S 5       r	S r
Srg)	ChangeQuorum   z*Change quorum of a Cloud Spanner database.EXAMPLESa*          To trigger change quorum from single-region mode to dual-region mode, run:

          $ {command} my-database-id --instance=my-instance-id --dual-region

        To trigger change quorum from dual-region mode to single-region mode with serving location as `asia-south1`, run:

          $ {command} my-database-id --instance=my-instance-id --single-region --serving-location=asia-south1

        To trigger change quorum using etag specified, run:

          $ {command} my-database-id --instance=my-instance-id --dual-region --etag=ETAG
        c                    [         R                  " U S5        U R                  SS9nUR                  S5      nUR	                  SSSSS9  UR                  S	5      nUR	                  S
SSSS9  UR	                  SSSS9  U R	                  SSS9  g)zSee base class.zto change quorumT)requiredz0Command-line flag for dual-region quorum change:z--dual-region
store_truez"Switch to dual-region quorum type.)r   actionhelpz3Command-line flags for single-region quorum change:z--single-regionz$Switch to single-region quorum type.z--serving-locationzThe cloud Spanner location.)r   r   z--etagz(Used for optimistic concurrency control.)r   N)r	   AddDatabaseResourceArgadd_mutually_exclusive_groupadd_argument_groupadd_argument)parserdual_region_or_single_regiondual_region_flagssingle_region_flagss       .lib/surface/spanner/databases/change_quorum.pyArgsChangeQuorum.Args4   s     ((1CD#)#F#F $G $  5GG: ""1	 #  7II= $$3	 %  $$* % 
 A      c                 `   [         R                  " SS5      nUR                  (       a  UR                  UR	                  5       S9nO&UR                  UR                  UR                  S9S9n[        R                  " UR                  R                  R                  5       X1R                  5      $ )zThis 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.
spannerv1)
dualRegion)servingLocation)singleRegion)r   GetMessagesModuledual_region
QuorumTypeDualRegionQuorumSingleRegionQuorumserving_locationr   r   CONCEPTSdatabaseParseetag)selfargsmsgsquorum_types       r   RunChangeQuorum.RunV   s     !!)T2DOOt/D/D/FOGkOO.."33 /  $ k
 !!$$&YY r    N)__name__
__module____qualname____firstlineno____doc__textwrapdedentdetailed_helpstaticmethodr   r3   __static_attributes__r5   r   r   r   r      s=    
 3 (// # -   Br   r   )r:   
__future__r   r   r   r;   googlecloudsdk.api_lib.spannerr   googlecloudsdk.api_lib.utilr   googlecloudsdk.callioper   "googlecloudsdk.command_lib.spannerr	   DefaultUniverseOnlyReleaseTracksReleaseTrackALPHABETAGACommandr   r5   r   r   <module>rL      s    2 &  '  4 , ( < T..33T5F5F5I5IK4<< K Kr   