
    K                     ~    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\5      rg)zNode group api client.    )absolute_import)division)unicode_literals)utils)poller)waiter)util)mapc                   \    \ rS rSrSrS rS rS rS rS r	S r
S	 rS
 r     SS jrSrg)NodeGroupsClient   z.Client for node groups service in the GCE API.c                 ^    Xl         X l        X0l        U R                   R                  U l        g N)clientmessages	resources
nodeGroups_service)selfr   r   r   s       >lib/googlecloudsdk/api_lib/compute/sole_tenancy/node_groups.py__init__NodeGroupsClient.__init__   s"    KMNKK**DM    c                    [         R                  " U R                  UUR                  [        R
                  " UR                  5      S9nU R                  R                  UR                  5       S9nU R                  R                  UUR                  5       UR                  UR                  S9nU R                  R                  U5      $ )z/Sets the node template field on the node group.)projectregion)nodeTemplate) nodeGroupsSetNodeTemplateRequest	nodeGroupr   zone)r	   ParseNodeTemplater   r   compute_utilZoneNameToRegionNamer    r    NodeGroupsSetNodeTemplateRequestRelativeName'ComputeNodeGroupsSetNodeTemplateRequestNamer   SetNodeTemplate)r   node_group_refnode_templatenode_template_refset_requestrequests         r   r(    NodeGroupsClient.SetNodeTemplate%   s    ..&&001D1DE	G
 --@@&335 A 7KmmCC)4 %%'&&  	 D "G
 ==((11r   c                     U R                   R                  U R                   R                  US9UR                  5       UR                  UR
                  S9nU R                  R                  U5      $ )N)additionalNodeCount)nodeGroupsAddNodesRequestr   r   r    )r    ComputeNodeGroupsAddNodesRequestNodeGroupsAddNodesRequestr'   r   r    r   AddNodes)r   r)   additional_node_countr-   s       r   r4   NodeGroupsClient.AddNodes5   sk    mm<<"&--"I"I 5 #J #7 %%'&&   = "G ==!!'**r   c                     U R                   R                  U R                   R                  US9UR                  5       UR                  UR
                  S9nU R                  R                  U5      $ )N)nodes)nodeGroupsDeleteNodesRequestr   r   r    )r   #ComputeNodeGroupsDeleteNodesRequestNodeGroupsDeleteNodesRequestr'   r   r    r   DeleteNodes)r   r)   r8   r-   s       r   r<   NodeGroupsClient.DeleteNodes>   sl    mm??%)]]%O%O &P & %%'&&   @ "G ==$$W--r   c                 &   [         R                  " X R                  5      nU R                  R                  US9nU R                  R	                  UUR                  5       UR                  UR                  S9nU R                  R                  U5      $ )z,Sets the autoscaling policy on a node group.)autoscalingPolicynodeGroupResourcer   r   r    )
r	   BuildAutoscalingr   	NodeGroupComputeNodeGroupsPatchRequestr'   r   r    r   Patch)r   r)   argsautoscaling_policy_refr,   r-   s         r   rE   NodeGroupsClient.PatchG   s    !224G--))0 * 2Kmm99% %%'&&  	 : "G
 ==w''r   c                 (   [         R                  " U R                  U5      nU R                  R                  US9nU R                  R	                  UUR                  5       UR                  UR                  S9nU R                  R                  U5      $ )z'Sets the share setting on a node group.)shareSettingsr@   )
r	   BuildShareSettingsr   rC   rD   r'   r   r    r   rE   )r   r)   share_settingshare_setting_refr,   r-   s         r   UpdateShareSetting#NodeGroupsClient.UpdateShareSettingS   s    //}M--))8I)JKmm99% %%'&&  	 : "G
 ==w''r   c                 J    U R                   R                  UR                  SS9$ )Nzcompute.zoneOperations)
collection)r   ParseselfLink)r   	operations     r   _GetOperationsRef"NodeGroupsClient._GetOperationsRef^   s+    >>	 2 2+C   E Er   c                 @    U(       a  [         R                  " XU5      $ g r   )r   WaitFor)r   operation_polleroperation_refmessages       r   _WaitForResultNodeGroupsClient._WaitForResultb   s    ^^,WEEr   Nc                    SnSnSn	Sn
SnU(       a"  U R                  X5      nU R                  U5      nU(       a"  U R                  X5      nU R                  U5      nU(       a"  U R                  X5      nU R                  U5      n	U(       a"  U R	                  X5      nU R                  U5      n
U(       a"  U R                  X5      nU R                  U5      nUR                  5       n[        R                  " U R                  5      nSnU R                  XSR                  X5      5      =(       d    UnU R                  XSR                  X=5      5      =(       d    UnSR                  [        [        U=(       d    / 5      5      nU R                  XSR                  UU5      5      =(       d    Un/ nU(       a  UR                  (       a,  SR                  UR                  5      nUR!                  U5        UR#                  S5      (       a,  SR                  UR$                  5      nUR!                  U5        UR#                  S	5      (       a,  S
R                  UR&                  5      nUR!                  U5        SR                  U5      nU R                  XSR                  UU5      5      =(       d    Un/ nU(       ax  SR                  UR(                  5      nUR!                  U5        UR*                  (       a;  SR                  SR                  UR*                  5      5      nUR!                  U5        SR                  U5      nU R                  XSR                  UU5      5      =(       d    UnU$ )zUpdates a Compute Node Group.Nz(Setting node template on [{0}] to [{1}].zAdding [{0}] nodes to [{1}].,zDeleting nodes [{0}] in [{1}].zautoscaler-mode={0}	min_nodeszmin-nodes={0}	max_nodeszmax-nodes={0}z.Updating autoscaling policy on [{0}] to [{1}].zshare-setting={0}zshare-with={0}z)Updating share setting on [{0}] to [{1}].)r(   rU   r4   r<   rE   rN   r'   r   Pollerr   r\   formatjoinr
   strautoscaler_modeappendIsSpecifiedr`   ra   rL   
share_with)r   r)   r*   r5   delete_nodesautoscaling_policy_argsshare_setting_argsset_node_template_refadd_nodes_refdelete_nodes_refrG   share_settings_refrT   node_group_namerY   resultdeleted_nodes_strautoscaling_policy_str_listmode_strmin_strmax_strautoscaling_policy_strshare_setting_str_listtype_strwith_strshare_setting_strs                             r   UpdateNodeGroupsClient.Updateg   sM    !M!&&~Ei"44Y?--Fi,,Y7m"">@i//	:**^Ei#55i@)).Mi11)<$))+O}}T]]3F  299	,- 7 17    &--!	45 ? 9?  S,*<"!=>  (//	01 ; 5; 
 #%	 	0	0(//#335#**84	 	,	,[	9	9!(()@)J)JK#**73	 	,	,[	9	9!(()@)J)JK#**73 XX&AB  8??3	56 @ :@   $++,>,L,LMh##H-		&	&#**388)),+ ,%%h/!78  3::.	01 ; 5;  Mr   )r   r   r   r   )NNNNN)__name__
__module____qualname____firstlineno____doc__r   r(   r4   r<   rE   rN   rU   r\   r}   __static_attributes__ r   r   r   r      sE    6+2 +.
(	(E  #'%) $Qr   r   N)r   
__future__r   r   r   googlecloudsdk.api_lib.computer   r"   )googlecloudsdk.api_lib.compute.operationsr   googlecloudsdk.api_lib.utilr   ;googlecloudsdk.command_lib.compute.sole_tenancy.node_groupsr	   	six.movesr
   objectr   r   r   r   <module>r      s0     &  ' @ < . L \v \r   