
    '                        d 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dlmZ ddlmZ e	j"                   e	j$                  e	j&                  j(                         G d de	j*                                      Z e	j$                  e	j&                  j.                         G d de             Z e	j$                  e	j&                  j2                         G d de             Zy)z)Creates a new AlloyDB secondary instance.    )absolute_import)division)unicode_literals)api_util)instance_operations)base)flags)instance_helper)log)
properties)	resourcesc                   6    e Zd ZdZdddZed        Zd Zd Zy)	CreateSecondary@Creates a new AlloyDB SECONDARY instance within a given cluster.z{description}z        To create a new secondary instance, run:

          $ {command} my-instance --cluster=my-cluster --region=us-central1
        )DESCRIPTIONEXAMPLESc                    t         j                  j                  |        t        j                  | d       t        j
                  |        t        j                  |        t        j                  |        t        j                  |        t        j                  | d       t        j                  |        t        j                  |        t        j                  |        t        j                  | d       t        j                  |        t        j                  |        t        j                   |        t        j"                  |        t        j$                  |        t        j&                  |        t        j(                  |        t        j*                  |        t        j,                  |        t        j.                  |        t        j0                  |        t        j2                  |        t        j4                  |        t        j6                  |        t        j8                  |        t        j:                  |        y)zxSpecifies additional command flags.

    Args:
      parser: argparse.Parser: Parser object for command line inputs
    FT)default_from_primary)show_negated_in_helpN)r   
ASYNC_FLAGAddToParserr	   
AddClusterAddAvailabilityTypeAddInstance	AddRegionAddDatabaseFlags
AddSSLModeAddRequireConnectorsAddAssignInboundPublicIpAddAuthorizedExternalNetworksAddOutboundPublicIpAddAllowedPSCProjectsAddPSCNetworkAttachmentUriAddPSCAutoConnectionsAddAllocatedIPRangeOverrideAddEnableConnectionPoolingAddConnectionPoolingPoolModeAddConnectionPoolingMinPoolSizeAddConnectionPoolingMaxPoolSize(AddConnectionPoolingMaxClientConnections%AddConnectionPoolingServerIdleTimeout$AddConnectionPoolingQueryWaitTimeoutAddConnectionPoolingStatsUsers+AddConnectionPoolingIgnoreStartupParameters"AddConnectionPoolingServerLifetime/AddConnectionPoolingClientConnectionIdleTimeout)AddConnectionPoolingMaxPreparedStatements)parsers    1lib/surface/alloydb/instances/create_secondary.pyArgszCreateSecondary.Args0   s    	OO'	VU#	f%	f	OOF	6"	V$7	v&	""6*	''/	f4@	'	$$V,	'	%%f- 
$$V,	&&v.	))&1	))&1	226:	//7	..v6	((0	55f=	,,V4	99&A	33F;    c                 2    t        j                  ||||      S N)r
   )ConstructSecondaryCreateRequestFromArgsGAselfclientalloydb_messagescluster_refargss        r3   'ConstructSecondaryCreateRequestFromArgsz7CreateSecondary.ConstructSecondaryCreateRequestFromArgsU   s!     DD +t r5   c                    t        j                  | j                               }|j                  }|j                  }|j
                  j                  dt        j                  j                  j                  j                  |j                  |j                        }| j                  ||||      }|j                  j!                  |      }t"        j$                  j'                  |j(                  d      }t*        j,                  j/                  dj1                  |j3                                      |j4                  s%t7        j8                  |d| j                                |S )zConstructs and sends request.

    Args:
      args: argparse.Namespace, An object that contains the values for the
        arguments specified in the .Args() method.

    Returns:
      ProcessHttpResponse of the request made.
    z#alloydb.projects.locations.clusters)
projectsIdlocationsId
clustersIdz%alloydb.projects.locations.operations)
collectionzOperation ID: {}zCreating secondary instance)r   AlloyDBClientReleaseTrackalloydb_clientr<   resource_parserCreater   VALUEScoreproject	GetOrFailregionclusterr?   %projects_locations_clusters_instancesCreatesecondaryr   REGISTRYParseRelativeNamenamer   statusPrintformatNameasync_r   Await)	r:   r>   r;   rG   r<   r=   reqopop_refs	            r3   RunzCreateSecondary.Run\   s,    ##D$5$5$78F**N..((//-$$))11;;KK<<	 0 K 
6
6 +tC 
	=	=	M	M
B 11
C 2 F JJ'..v{{}=>;;
/1B1B1D Ir5   N)	__name__
__module____qualname____doc__detailed_helpstaticmethodr4   r?   r^    r5   r3   r   r   "   s8     I %- "< "<H"r5   r   c                   2     e Zd ZdZe fd       Zd Z xZS )CreateSecondaryBetar   c                 4    t         t        t          |       y r7   )superrg   r4   clsr2   	__class__s     r3   r4   zCreateSecondaryBeta.Args   s    	
28@r5   c                 2    t        j                  ||||      S r7   )r
   +ConstructSecondaryCreateRequestFromArgsBetar9   s        r3   r?   z;CreateSecondaryBeta.ConstructSecondaryCreateRequestFromArgs   s!     FF +t r5   r_   r`   ra   rb   classmethodr4   r?   __classcell__rl   s   @r3   rg   rg      s    HA Ar5   rg   c                   2     e Zd ZdZe fd       Zd Z xZS )CreateSecondaryAlphar   c                 4    t         t        t          |       y r7   )ri   rt   r4   rj   s     r3   r4   zCreateSecondaryAlpha.Args   s    	
 4:6Br5   c                 2    t        j                  ||||      S r7   )r
   ,ConstructSecondaryCreateRequestFromArgsAlphar9   s        r3   r?   z<CreateSecondaryAlpha.ConstructSecondaryCreateRequestFromArgs   s!     GG +t r5   ro   rr   s   @r3   rt   rt      s    HC Cr5   rt   N)rb   
__future__r   r   r   googlecloudsdk.api_lib.alloydbr   r   googlecloudsdk.callioper   "googlecloudsdk.command_lib.alloydbr	   r
   googlecloudsdk.corer   r   r   DefaultUniverseOnlyReleaseTracksrF   GACreateCommandr   BETArg   ALPHArt   re   r5   r3   <module>r      s    0 &  ' 3 > ( 4 > # * ) D%%(()Zd(( Z * Zz D%%**+/  , D%%++,.  -r5   