
    !                         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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.    )
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   r6   r6   &   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	   r/   r0   r1   r2   r   YieldFromListr5   )r8   r9   r;   s      r   ListrD   3   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
   r-   r.   r	   r/   r0   r1   r2   +SpannerProjectsInstanceConfigsDeleteRequestr4   r5   Delete)r7   rF   validate_onlyr8   r9   r:   r;   s          r   rI   rI   @   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_Creater7   rJ   rF   )argsr7   r9   rL   rN   base_configreplica_info_lists          r   CreateUsingExistingConfigrY   M   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
   r-   r.   r	   r/   r0   r1   r2   rT   InstanceConfigLabelsValuesix	iteritemsAdditionalPropertyrU   r4   )r7   rL   rW   replicas_argrJ   rN   rF   r9   
config_refrX   labels_messager[   r\   s                r   CreateUsingReplicasrf   d   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*   rM   rO   rN   rP   )instanceConfigIdinstanceConfigrG   )r=   createInstanceConfigRequest)r   r+   r
   r-   Creater	   r/   r0   r1   r2   r.   r^   r4   rF   +SpannerProjectsInstanceConfigsCreateRequestCreateInstanceConfigRequestr5   )r9   r7   rL   rW   rX   rN   rJ   rF   r8   project_refrd   instance_configr;   s                r   rU   rU      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)rr   rq   N)r   ChoiceToEnumReplicaInfoTypeValueValuesEnumappend)r9   add_replicas_argrX   replicar   s        r   rT   rT      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.Nrq   rr   )	r   rs   rt   ru   	enumeraterr   rq   r   pop)r9   skip_replicas_argrX   replica_to_skipindex_to_deleter   indexrx   s           r   rR   rR      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)   rL   c                     > TR                  TR                  5       S9n TR                  R                  U 5      R                  $ )Nr)   )r3   r4   r5   r6   rN   )r;   r8   r9   r:   s    r   	GetLabelsPatch.<locals>.GetLabels   s<    

7
7S=M=M=O
7
PC**..s3:::r   rN   zNo updates requested.,)ri   
updateMaskrG   )r*   updateInstanceConfigRequest)r   r+   r,   r
   r-   r.   r7   r	   r/   r0   r1   r2   r^   r4   rL   rM   rv   rF   r   ProcessUpdateArgsLazyr_   needs_updaterN   r   NoFieldsSpecifiedError*SpannerProjectsInstanceConfigsPatchRequestUpdateInstanceConfigRequestjoinrJ   r5   Patch)	rV   ro   update_maskr   labels_updater;   r8   r9   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   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
   r`   Errorr   r6   rD   rI   rY   rf   rU   rT   rR   r   r   r   r   <module>r      sx    * ( , 0 : < = * ) 
1/// 1
2
'
5K8  $!IF 5DK+&&4r   