
    3                     R   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 ej                   ej                  ej                   j"                  ej                   j$                  ej                   j&                         G d
 dej(                                      Zy)z+Command for spanner database change quorum.    )absolute_import)division)unicode_literalsN)	databases)apis)base)resource_argsc                   N    e Zd ZdZd ej
                  d      iZed        Zd Z	y)ChangeQuorumz*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                 :   t        j                  | d       | j                  d      }|j                  d      }|j	                  dddd       |j                  d	      }|j	                  d
ddd       |j	                  ddd       | j	                  dd       y)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ArgszChangeQuorum.Args4   s     ((1CD#)#F#F $G $  5GG: ""1	 #  7II= $$3	 %  $$* % 
 A      c                 f   t        j                  dd      }|j                  r!|j                  |j	                               }n,|j                  |j                  |j                              }t        j                  |j                  j                  j                         ||j                        S )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   RunzChangeQuorum.RunV   s     !!)T2DOOt/D/D/FOGkOO.."33 /  $ k
 !!$$&TYY r   N)
__name__
__module____qualname____doc__textwrapdedentdetailed_helpstaticmethodr   r1    r   r   r   r      s?    
 3 /(// # -   Br   r   )r5   
__future__r   r   r   r6   googlecloudsdk.api_lib.spannerr   googlecloudsdk.api_lib.utilr   googlecloudsdk.callioper   "googlecloudsdk.command_lib.spannerr	   DefaultUniverseOnlyReleaseTracksReleaseTrackALPHABETAGACommandr   r:   r   r   <module>rG      s    2 &  '  4 , ( < T..33T5F5F5I5IK4<< K Kr   