
    s"                         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 dd
lmZ ddlmZ g dZ ej$                  d      ZdZdZ	 	 	 	 	 	 	 	 ddZd Z	 	 	 	 	 	 	 	 	 	 ddZd Zd Zy)z&Spanner instance partition API helper.    )absolute_import)division)unicode_literalsN)
list_pager)timestamp_pb2)response_util)apis)
properties)	resources)zroles/spanner.adminzroles/spanner.databaseAdminzroles/spanner.databaseReaderzroles/spanner.databaseUserzroles/spanner.viewer   )secondsspannerv1c                    t        j                  t        t              }t        j                  t        t              }t
        j                  j                  |dt        j                  j                  j                  j                  id      }|j                  |j                         |      }|r||_        nU|r||_        nK|s|s
|s|	s|
s|s|r=|j#                  |j%                  ||||	      |j'                  |
||            |_        |j+                  | j                         |j-                  ||      	      }|j.                  j1                  |      S )
z Create a new instance partition.
projectsIdz spanner.projects.instanceConfigs)params
collection)configdisplayNameminNodesmaxNodesminProcessingUnitsmaxProcessingUnits!highPriorityCpuUtilizationPercenttotalCpuUtilizationPercentstorageUtilizationPercentautoscalingLimitsautoscalingTargets)instancePartitionIdinstancePartition)parentcreateInstancePartitionRequest)r	   GetClientInstance	_API_NAME_API_VERSIONGetMessagesModuler   REGISTRYParser
   VALUEScoreproject	GetOrFailInstancePartitionRelativeName	nodeCountprocessingUnitsAutoscalingConfigAutoscalingLimitsAutoscalingTargetsautoscalingConfig7SpannerProjectsInstancesInstancePartitionsCreateRequestCreateInstancePartitionRequest%projects_instances_instancePartitionsCreate)instance_refinstance_partitionr   descriptionnodesprocessing_unitsautoscaling_min_nodesautoscaling_max_nodes autoscaling_min_processing_units autoscaling_max_processing_units$autoscaling_high_priority_cpu_targetautoscaling_total_cpu_targetautoscaling_storage_targetclientmsgs
config_refinstance_partition_objreqs                     9lib/googlecloudsdk/api_lib/spanner/instance_partitions.pyr;   r;   /   sl     !!)\:&				<	8$!!''J--22::DDE3 ( *
  11$$&K 2  ',$-=*		)	)	-	%	#/3/E/E00**??	 1 
  22.R'C&@ 3 
 0F 0, 	DD&&(%)%H%H02 &I & 	E 	# 
	5	5	<	<S	AA    c                     t        j                  t        t              }t        j                  t        t              }|j                  | j                               }|j                  j                  |      S )z"Get an instance partition by name.name)	r	   r&   r'   r(   r)   4SpannerProjectsInstancesInstancePartitionsGetRequestr1   r:   Getinstance_partition_refrH   rI   rL   s       rM   rS   rS   n   sa    !!)\:&				<	8$AA!..0 	B 	# 
	5	5	9	9#	>>rN   c                    g }||j                  d       ||j                  d       ||j                  d       |r|s|r|r|s|	r|
r|j                  d       n|r|j                  d       |r|j                  d       |r|j                  d       |r|j                  d       |r|j                  d	       |	r|j                  d
       |
r|j                  d       t        j                  t        t              }t        j
                  t        t              }|j                  |      }|r||_        nU|r||_        nK|s|s
|s|s|s|	s|
r=|j                  |j                  ||||      |j                  ||	|
            |_        |j                  | j                         |j                  dj!                  |      |            }|j"                  j%                  |      S )zUpdate an instance partition.r   r2   r3   r7   z,autoscalingConfig.autoscalingLimits.minNodesz,autoscalingConfig.autoscalingLimits.maxNodesz6autoscalingConfig.autoscalingLimits.minProcessingUnitsz6autoscalingConfig.autoscalingLimits.maxProcessingUnitszFautoscalingConfig.autoscalingTargets.highPriorityCpuUtilizationPercentz?autoscalingConfig.autoscalingTargets.totalCpuUtilizationPercentz>autoscalingConfig.autoscalingTargets.storageUtilizationPercent)r   r   r   r   ,)	fieldMaskr#   )rQ   updateInstancePartitionRequest)appendr	   r&   r'   r(   r)   r0   r3   r2   r4   r5   r6   r7   6SpannerProjectsInstancesInstancePartitionsPatchRequestr1   UpdateInstancePartitionRequestjoinr:   Patch)rU   r>   r?   r@   rA   rB   rC   rD   rE   rF   rG   fieldsrH   rI   rK   rL   s                   rM   r^   r^   x   s    &
MM- 

MM+!
MM#$ !6
*/O+/K
$
MM%&mmBCmmBC'mmLM'mmLM+mm
R $mm
K "mm
J !!)\:&				<	8$11k1J-=*',$		)	)	-	%	#/3/E/E00**??	 1 
  22.R'C&@ 3 
 0F 0, 	CC!..0%)%H%HHHV$8N &I & 	D 	# 
	5	5	;	;C	@@rN   c                     t        j                  t        t              }t        j                  t        t              }t        j                         }|j                  t        j                  j                  t        j                  j                        t        z          |j                  | j                         |j                               }t!        j"                  |j$                  |ddt&        j(                        S )z(List instance partitions in the project.)tz)r$   instancePartitionDeadlineinstancePartitionspageSize)fieldbatch_size_attributeget_field_func)r	   r&   r'   r(   r)   r   	TimestampFromDatetimedatetimenowtimezoneutc&UNREACHABLE_INSTANCE_PARTITION_TIMEOUT5SpannerProjectsInstancesInstancePartitionsListRequestr1   ToJsonStringr   YieldFromListr:   r   +GetFieldAndLogUnreachableInstancePartitions)r<   rH   rI   tp_protorL   s        rM   Listrt      s    !!)\:&				<	8$$$&(
x00445./ 	BB&&( ( 5 5 7 	C 	# 
	!	!22	 %"NN
 rN   c                     t        j                  t        t              }t        j                  t        t              }|j                  | j                               }|j                  j                  |      S )zDelete an instance partition.rP   )	r	   r&   r'   r(   r)   7SpannerProjectsInstancesInstancePartitionsDeleteRequestr1   r:   DeleterT   s       rM   rw   rw      sa    !!)\:&				<	8$DD!..0 	E 	# 
	5	5	<	<S	AArN   )NNNNNNNN)
NNNNNNNNNN)__doc__
__future__r   r   r   rj   apitools.base.pyr   cloudsdk.google.protobufr   googlecloudsdk.api_lib.spannerr   googlecloudsdk.api_lib.utilr	   googlecloudsdk.corer
   r   KNOWN_ROLES	timedeltarn   r'   r(   r;   rS   r^   rt   rw    rN   rM   <module>r      s    - &  '  ' 2 8 , * ) *<););B)G &	 %)%))-!%#<B~? 
%)%))-!%#YAx,BrN   