
    "                         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  G d de
j&                        Zy)z?Utilities for node pool resources in Anthos clusters on VMware.    )absolute_import)division)unicode_literals)	Generator)
list_pager)client)update_mask)parser_extensions)flags)gkeonprem_v1_messagesc                       e Zd ZdZ fdZdej                  deej                  ddf   fdZ
dej                  dej                  fdZdej                  dej                  fdZdej                  dej                  fd	Zdej                  dej                  fd
Zdej                  dej                  fdZdej                  dej                  fdZdej                  fdZdej                  fdZdej                  dej(                  j*                  fdZdej                  fdZdej                  fdZdej                  fdZdej                  fdZ xZS )NodePoolsClientz7Client for node pools in Anthos clusters on VMware API.c                 b    t        t        | 
  di | | j                  j                  | _        y )N )superr   __init___client1projects_locations_vmwareClusters_vmwareNodePools_service)selfkwargs	__class__s     Clib/googlecloudsdk/api_lib/container/gkeonprem/vmware_node_pools.pyr   zNodePoolsClient.__init__"   s)    	/4)3F3FF 	M    argsreturnNc           
          t        j                  | j                  |            }t        j                  | j
                  |dt        j                  |d      t        j                  |d      d      S )z6Lists Node Pools in the Anthos clusters on VMware API.)parentvmwareNodePools	page_sizelimitpageSize)field
batch_sizer!   batch_size_attribute)messagesBGkeonpremProjectsLocationsVmwareClustersVmwareNodePoolsListRequest_user_cluster_namer   YieldFromListr   r   Get)r   r   list_reqs      r   ListzNodePoolsClient.List(   sc     ZZ&&t,H ##99T;/iig&' r   c                 0   t        j                  |d      t        j                  |d      | j                  |      t        j                  |d      t        j                  |d      d}t        j                  di |}| j
                  j                  |      S )z+Deletes a gkeonprem node pool API resource.allow_missingetagvalidate_onlyignore_errors)allowMissingr/   namevalidateOnlyignoreErrorsr   )r   r*   _node_pool_namer&   DGkeonpremProjectsLocationsVmwareClustersVmwareNodePoolsDeleteRequestr   Deleter   r   r   reqs       r   r8   zNodePoolsClient.Delete8   s     		$8		$'$$T*		$8		$8F 
W
W 
C ==$$r   c                 .   | j                  |      }|j                         j                         t        j                  |d      | j                  |      | j                  |      d}t        j                  di |}| j                  j                  |      S )z+Creates a gkeonprem node pool API resource.r0   )r   r4   vmwareNodePoolvmwareNodePoolIdr   )_node_pool_refParentRelativeNamer   r*   _vmware_node_pool_node_pool_idr&   DGkeonpremProjectsLocationsVmwareClustersVmwareNodePoolsCreateRequestr   Create)r   r   node_pool_refr   r:   s        r   rD   zNodePoolsClient.CreateF   s    ''-M&&(557		$8006 ..t4	F 
W
W 
C ==$$r   c                 B   t        j                  |d      | j                  |      t        j                  |t        j
                        t        j                  |d      | j                  |      d}t        j                  di |}| j                  j                  |      S )z+Updates a gkeonprem node pool API resource.r.   r0   )r2   r3   
updateMaskr4   r<   r   )r   r*   r6   r	   get_update_mask%VMWARE_NODE_POOL_ARGS_TO_UPDATE_MASKSrA   r&   CGkeonpremProjectsLocationsVmwareClustersVmwareNodePoolsPatchRequestr   Patchr9   s       r   UpdatezNodePoolsClient.UpdateT   s     		$8$$T*!11+CC
 		$8006F 
V
V 
C ==s##r   c                     t        j                  | j                  |            }t        j                  || j	                  |            }| j
                  j                  |      S )z3Enrolls an Anthos on VMware node pool API resource.)r=   )enrollVmwareNodePoolRequestr   )r&   EnrollVmwareNodePoolRequestrB   DGkeonpremProjectsLocationsVmwareClustersVmwareNodePoolsEnrollRequest_node_pool_parentr   Enroll)r   r   enroll_vmware_node_pool_requestr:   s       r   rR   zNodePoolsClient.Enrolld   s[    &.&J&J++D1'# 
W
W$C%%d+C ==$$r   c                    t        j                  |d      t        j                  |d      | j                  |      t        j                  |d      d}t        j                  di |}| j
                  j                  |      S )z5Unenrolls an Anthos on VMware node pool API resource.r.   r/   r0   )r2   r/   r3   r4   r   )r   r*   r6   r&   FGkeonpremProjectsLocationsVmwareClustersVmwareNodePoolsUnenrollRequestr   Unenrollr9   s       r   rV   zNodePoolsClient.Unenrollo   st     		$8		$'$$T*		$8	F 
Y
Y 
C ==!!#&&r   c                    | j                  |      t        j                  |d      | j                  |      | j	                  |      t        j                  |d      | j                  |      d}t        j                  di |S )z(Constructs proto message VmwareNodePool.display_nameversion)r3   displayNameannotationsconfigonPremVersionnodePoolAutoscalingr   )r6   r   r*   _annotations_vmware_node_config$_vmware_node_pool_autoscaling_configr&   VmwareNodePoolr   r   r   s      r   rA   z!NodePoolsClient._vmware_node_pool|   su    
 $$T*yy~6((.**4043#HHNF "",V,,r   c                 `    t        j                  |d      ryt        j                  |d      ryy )Nenable_load_balancerTdisable_load_balancerF)r   r*   )r   r   s     r   _enable_load_balancerz%NodePoolsClient._enable_load_balancer   s)    yy-.yy./r   c                     g }t        j                  |di       }|j                         D ]7  }| j                  |      }|j	                  t        j                  di |       9 |S )Nnode_taintsr   )r   r*   items_parse_node_taintappendr&   	NodeTaint)r   r   taint_messagesri   
node_tainttaint_objects         r   _node_taintszNodePoolsClient._node_taints   s`    N))D-4K!'')
++J7lH..>>? * r   c                 "   t        j                  |di       }g }|sy|j                         D ]?  \  }}|j                  t        j
                  j                  j                  ||             A t        j
                  j                  |      }|S )z%Constructs proto message LabelsValue.node_labelsNkeyvalueadditionalProperties)r   r*   rj   rl   r&   VmwareNodeConfigLabelsValueAdditionalProperty)r   r   rs   additional_property_messagesru   rv   labels_value_messages          r   _labels_valuezNodePoolsClient._labels_value   s     ))D-4K#% !'')
U"))

#
#
/
/
B
BU C  * $44@@9 A   r   c                    t        j                  |d      t        j                  |d      t        j                  |d      t        j                  |d      t        j                  |d      t        j                  |d      | j                  |      | j                  |      | j	                  |      | j                  |      d
}t        j                  |      rt        j                  d	i |S y)
z*Constructs proto message VmwareNodeConfig.cpusmemoryreplicas
image_typeimageboot_disk_size)
r   memoryMbr   	imageTyper   bootDiskSizeGbtaintslabelsvsphereConfigenableLoadBalancerNr   )	r   r*   rq   r~   _vsphere_configrg   IsSetr&   ry   rc   s      r   r`   z#NodePoolsClient._vmware_node_config   s     		$'IIdH-IIdJ/YYt\24)))D*:;##D)$$T*--d3"88>F {{6&&000r   c                     d|j                         vry|j                  j                  dd      |j                  j                  dd      d}t        j                  |      rt        j                  di |S y)z-Constructs proto message VmwareVsphereConfig.vsphere_configN	datastorezstorage-policy-name)r   storagePolicyNamer   )GetSpecifiedArgsDictr   getr   r   r&   VmwareVsphereConfigrc   s      r   r   zNodePoolsClient._vsphere_config   ss    t88:: ((,,[$?!0044!4
F {{6))3F33r   c                     t        j                  |d      t        j                  |d      d}t        |j                               rt	        j
                  di |S y)z9Constructs proto message VmwareNodePoolAutoscalingConfig.min_replicasmax_replicas)minReplicasmaxReplicasNr   )r   r*   anyvaluesr&   VmwareNodePoolAutoscalingConfigrc   s      r   ra   z4NodePoolsClient._vmware_node_pool_autoscaling_config   sN    
 yy~6yy~6F 6==?55???r   c                 "   t        j                  |di       }g }|sy|j                         D ]?  \  }}|j                  t        j
                  j                  j                  ||             A t        j
                  j                  |      }|S )z*Constructs proto message AnnotationsValue.r[   Nrt   rw   )r   r*   rj   rl   r&   rb   AnnotationsValuer{   )r   r   r[   r|   ru   rv   annotation_value_messages          r   r_   zNodePoolsClient._annotations   s    ))D-4K#% !'')
U"))

!
!
2
2
E
EU F  *  (66GG9  H   $#r   )__name__
__module____qualname____doc__r   r
   	Namespacer   r&   rb   r,   	Operationr8   rD   rL   rR   rV   rA   rg   rq   ry   rz   r~   r`   r   ra   r_   __classcell__)r   s   @r   r   r      s   ?#--(($45 %*44 %9K9K %%*44 %9K9K %$*44 $9K9K $ 	%*44 	%9K9K 	%',66 '8;M;M '-#----(9(C(C 0::  #--   ,, ,&7&A&A $"3"="= 
#--
$0:: $r   r   N)r   
__future__r   r   r   typingr   apitools.base.pyr   *googlecloudsdk.api_lib.container.gkeonpremr   r	   googlecloudsdk.callioper
   +googlecloudsdk.command_lib.container.vmwarer   2googlecloudsdk.generated_clients.apis.gkeonprem.v1r   r&   
ClientBaser   r   r   r   <module>r      s=    F &  '  ' = B 5 = `N$f'' N$r   