
    Q"                        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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SKJr  SSKr " S S\R*                  5      rS rS rSS jrS r  SS jr SS jrS rS rS rg)z#Spanner instanceConfigs API helper.    )absolute_import)division)unicode_literals)
list_pager)apis)errors)	arg_utils)labels_util)
exceptions)
properties)	resourcesNc                   ,   ^  \ rS rSrSrU 4S jrSrU =r$ )MissingReplicaError    z;Indicates that the replica is missing in the source config.c                 J   > [         [        U ]  SR                  X5      5        g )NzBThe replica {0} of type {1} is not in the source config's replicas)superr   __init__format)selfreplica_locationreplica_type	__class__s      6lib/googlecloudsdk/api_lib/spanner/instance_configs.pyr   MissingReplicaError.__init__#   s!    	
t-M	 	/1     )__name__
__module____qualname____firstlineno____doc__r   __static_attributes____classcell__)r   s   @r   r   r       s    C1 1r   r   c                 h   [         R                  " SS5      n[         R                  " SS5      n[        R                  R                  U S[        R                  R                  R                  R                  0SS9nUR                  UR                  5       S9nUR                  R                  U5      $ )z"Get the specified instance config.spannerv1
projectsId spanner.projects.instanceConfigsparams
collectionname)r   GetClientInstanceGetMessagesModuler   REGISTRYParser   VALUEScoreproject	GetOrFail(SpannerProjectsInstanceConfigsGetRequestRelativeNameprojects_instanceConfigsGet)configclientmsgsrefreqs        r   r9   r9   )   s    !!)T2&				4	0$  J--22::DDE3 	! 	5# 	55 	6 	#		(	(	,	,S	11r   c                  $   [         R                  " SS5      n [         R                  " SS5      nUR                  S[        R
                  R                  R                  R                  5       -   S9n[        R                  " U R                  USSS9$ )z%List instance configs in the project.r%   r&   z	projects/)parentinstanceConfigspageSize)fieldbatch_size_attribute)r   r.   r/   )SpannerProjectsInstanceConfigsListRequestr   r2   r3   r4   r5   r   YieldFromListr8   )r;   r<   r>   s      r   ListrG   6   s    !!)T2&				4	0$66**//77AACC 	7 	E#		!	!%%	%	
' 'r   c                 j   [         R                  " SS5      n[         R                  " SS5      n[        R                  R                  U S[        R                  R                  R                  R                  0SS9nUR                  UR                  5       XS9nUR                  R                  U5      $ )zDelete an instance config.r%   r&   r'   r(   r)   )r-   etagvalidateOnly)r   r.   r/   r   r0   r1   r   r2   r3   r4   r5   +SpannerProjectsInstanceConfigsDeleteRequestr7   r8   Delete)r:   rI   validate_onlyr;   r<   r=   r>   s          r   rL   rL   C   s    !!)T2&				4	0$  J--22::DDE3 	! 	5# 	88D 	9 	F#		(	(	/	/	44r   c           
      4   [         R                  " SS5      nU R                  (       a  U R                  OUR                  nU R                  (       a  U R                  OUR                  nUR
                  (       a  UR
                  OUR                  nUR                  nU R                  (       a  [        X R                  U5        U R                  (       a  [        X R                  U5        [        X R                  X5XdU R                  U R                  5      $ )zHCreate a new CMMR instance config based on an existing GMMR/CMMR config.r%   r&   )r   r/   display_namedisplayNamelabels
baseConfigr-   replicasskip_replicas_SkipReplicasadd_replicas_AppendReplicas_Creater:   rM   rI   )argsr:   r<   rO   rQ   base_configreplica_info_lists          r   CreateUsingExistingConfigr\   P   s    				4	0$ '+&7&7""V=O=O,++4;;6==& &,%6%6!!FKK+oo	$**,=>	D++->?	{{L"D,>,>		
K Kr   c                    [         R                  " SS5      n[        R                  R	                  US[
        R                  R                  R                  R                  0SS9n/ n	[        XsU	5        0 n
Ubc  UR                  R                  [        R                  " U5       VVs/ s H(  u  pUR                  R                  R                  XS9PM*     snnS9n
[!        XpXR#                  5       XXF5      $ s  snnf )zACreate a new instance configs based on provided list of replicas.r%   r&   r'   r(   r)   )keyvalue)additionalProperties)r   r/   r   r0   r1   r   r2   r3   r4   r5   rW   InstanceConfigLabelsValuesix	iteritemsAdditionalPropertyrX   r7   )r:   rO   rZ   replicas_argrM   rQ   rI   r<   
config_refr[   labels_messager^   r_   s                r   CreateUsingReplicasri   g   s     
			4	0$!!''J--22::DDE3 ( 5*
 $&78.((4447MM&4IK4Ijc 	'':: 	; 	"4IK4 N
 
|-D-D-F"M
I IKs   &/C7
c           	      J   [         R                  " SS5      n[        R                  R	                  S[
        R                  R                  R                  R                  S9n	[        R                  R                  US[
        R                  R                  R                  R                  0SS9n
U R                  U
R                  5       UUUUS9nU(       a  X{l        U R                  U	R                  5       U R                  UUUS	9S
9nUR                   R	                  U5      $ )z'Create instance configs in the project.r%   r&   zspanner.projects)r'   r'   r(   r)   )r-   rP   rR   rQ   rS   )instanceConfigIdinstanceConfigrJ   )r@   createInstanceConfigRequest)r   r.   r   r0   Creater   r2   r3   r4   r5   r1   ra   r7   rI   +SpannerProjectsInstanceConfigsCreateRequestCreateInstanceConfigRequestr8   )r<   r:   rO   rZ   r[   rQ   rM   rI   r;   project_refrg   instance_configr>   s                r   rX   rX      s!    !!)T2&""))Z%6%6%;%;%C%C%M%M * O+!!''J--22::DDE3 ( 5* ''""$  ( "/ 
88%%'"&"B"B!($ #C #& 	9 	'# 
	(	(	/	/	44r   c                     U HS  n[         R                  " US   U R                  R                  5      nUR	                  U R                  US   US95        MU     g)z?Appends each in add_replicas_arg to the given ReplicaInfo list.typelocation)ru   rt   N)r	   ChoiceToEnumReplicaInfoTypeValueValuesEnumappend)r<   add_replicas_argr[   replicar   s        r   rW   rW      sY    !g))'&/*.*:*:*N*NPL'*"5LIK "r   c                 6   U H  nSn[         R                  " US   U R                  R                  5      n[	        U5       H.  u  pgUR
                  US   :X  d  M  UR                  U:X  d  M,  UnM0     Uc  [        US   U5      eUR                  U5        M     g)z@Skips each in skip_replicas_arg from the given ReplicaInfo list.Nrt   ru   )	r	   rv   rw   rx   	enumerateru   rt   r   pop)r<   skip_replicas_argr[   replica_to_skipindex_to_deleter   indexr{   s           r   rU   rU      s    *oO))/&*A*.*:*:*N*NPL#$56


oj9
9
,,,
& 7 
 ;\JJ/* +r   c           	        ^^^ [         R                  " SS5      m[         R                  " SS5      m[        R                  R                  U R                  S[        R                  R                  R                  R                  0SS9mTR                  TR                  5       S9n/ nU R                  b"  U R                  Ul        UR!                  S5        U R"                  b  U R"                  Ul        UUU4S jn[$        R&                  " U TR                  R(                  U5      nUR*                  (       a"  UR,                  Ul        UR!                  S	5        U(       d  [.        R0                  " S
5      eTR3                  TR                  5       TR5                  USR7                  U5      U R8                  S9S9nTR:                  R=                  U5      $ )zUpdate an instance config.r%   r&   r'   r(   r)   r,   rO   c                     > TR                  TR                  5       S9n TR                  R                  U 5      R                  $ )Nr,   )r6   r7   r8   r9   rQ   )r>   r;   r<   r=   s    r   	GetLabelsPatch.<locals>.GetLabels   s<    

7
7S=M=M=O
7
PC**..s3:::r   rQ   zNo updates requested.,)rl   
updateMaskrJ   )r-   updateInstanceConfigRequest)r   r.   r/   r   r0   r1   r:   r   r2   r3   r4   r5   ra   r7   rO   rP   ry   rI   r
   ProcessUpdateArgsLazyrb   needs_updaterQ   r   NoFieldsSpecifiedError*SpannerProjectsInstanceConfigsPatchRequestUpdateInstanceConfigRequestjoinrM   r8   Patch)	rY   rr   update_maskr   labels_updater>   r;   r<   r=   s	         @@@r   r   r      s   !!)T2&				4	0$  
kkJ--22::DDE3 	! 	5# ''S-=-=-?'@/+	""&"3"3O~&	YY99O; 33
D++Y8-*11Ox 	

'
'(?
@@77"&"B"B(XXk*)) #C #+ 	8 	,# 
	(	(	.	.s	33r   )NF)NN)N) r!   
__future__r   r   r   apitools.base.pyr   googlecloudsdk.api_lib.utilr   googlecloudsdk.command_lib.air   $googlecloudsdk.command_lib.util.apisr	   $googlecloudsdk.command_lib.util.argsr
   googlecloudsdk.corer   core_exceptionsr   r   rc   Errorr   r9   rG   rL   r\   ri   rX   rW   rU   r   r   r   r   <module>r      s    * &  ' ' , 0 : < = * ) 
1/// 1
2
'
5K8  $!IF 5DK+&&4r   