
    *                         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  G d de	j"                        Z G d de      Zy)zCUtilities for node pool resources in Anthos clusters on bare metal.    )absolute_import)division)unicode_literals)
list_pager)bare_metal_clusters)update_mask)
exceptions)parser_extensions)gkeonprem_v1_messagesc                   <   e Zd ZdZdej
                  fdZdej
                  fdZdej
                  fdZd Z	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dej
                  fdZdej
                  fdZy)_BareMetalNodePoolsClientz1Base class for GKE OnPrem Bare Metal API clients.argsc                     g }t        |di       }|sg S |j                         D ]7  }| j                  |      }|j                  t	        j
                  di |       9 |S )z#Constructs proto message NodeTaint.node_taints )getattritems_parse_node_taintappendmessages	NodeTaint)selfr   taint_messagesr   
node_tainttaint_objects         Glib/googlecloudsdk/api_lib/container/gkeonprem/bare_metal_node_pools.py_node_taintsz&_BareMetalNodePoolsClient._node_taints    sd    N$r2Ki!'')
++J7lH..>>? *     c                    t        |di       }g }|sy|j                         D ]?  \  }}|j                  t        j                  j
                  j                  ||             A t        j                  j                  |      }|S )%Constructs proto message LabelsValue.node_labelsNkeyvalueadditionalProperties)r   r   r   r   BareMetalNodePoolConfigLabelsValueAdditionalProperty)r   r   r!   additional_property_messagesr#   r$   labels_value_messages          r   _node_labelsz&_BareMetalNodePoolsClient._node_labels-   s    $r2K#% !'')
U"))

*
*
6
6
I
IU J  * $;;GG9 H   r   c                     |j                   sg S |j                   j                  dg       }|st        j                  dd      g }|D ]"  }|j	                  | j                  |             $ |S ),Constructs proto message field node_configs.nodeConfigs--node_configs_from_filez1Missing field [nodeConfigs] in Node configs file.)node_configs_from_filegetr	   BadArgumentExceptionr   _bare_metal_node_config)r   r   node_configsnode_config_messagesnode_configs        r   _node_configs_from_filez1_BareMetalNodePoolsClient._node_configs_from_fileA   sw    &&i..22="EL++
$
= 
 #!!$">">{"KL $  r   c                     |j                  dd      }|st        j                  dd      || j                  |j                  di             d}t	        j
                  di |S )z-Constructs proto message BareMetalNodeConfig.nodeIP r0   z,Missing field [nodeIP] in Node configs file.labels)nodeIpr<   r   )r2   r	   r3   _node_config_labelsr   BareMetalNodeConfig)r   r7   node_ipkwargss       r   r4   z1_BareMetalNodePoolsClient._bare_metal_node_configU   si    ooh+G++
$
8  **;??8R+HIF
 ''1&11r   c                     g }|sy|j                         D ]?  \  }}|j                  t        j                  j                  j                  ||             A t        j                  j	                  |      }|S )r    Nr"   r%   )r   r   r   r?   r(   r)   )r   r<   r*   r#   r$   r+   s         r   r>   z-_BareMetalNodePoolsClient._node_config_labelse   s    #% lln
U"))

&
&
2
2
E
EU F  % $77CC9 D   r   c                 v    g }t        |dd      }|r'|D ]"  }|j                  | j                  |             $ |S )r.   r5   N)r   r   r7   )r   r   r5   node_config_flag_valuer7   s        r   _node_configs_from_flagz1_BareMetalNodePoolsClient._node_configs_from_flagx   sD    L$T>4@/+D,,[9: 0 r   c                 P    d|j                         v ryd|j                         v ryy )Ndisable_serialize_image_pullsTenable_serialize_image_pullsF)GetSpecifiedArgsDict)r   r   s     r    _serialized_image_pulls_disabledz:_BareMetalNodePoolsClient._serialized_image_pulls_disabled   s-    &$*C*C*EE	'4+D+D+F	Fr   c                     | j                  |d      | j                  |d      | j                  |      d}t        |j                               rt	        j
                  di |S y )Nregistry_pull_qpsregistry_burst)registryPullQpsregistryBurstserializeImagePullsDisabledr   )GetFlagrJ   anyvaluesr   BareMetalKubeletConfigr   r   rA   s      r   _kubelet_configz)_BareMetalNodePoolsClient._kubelet_config   s_    <<.ABd,<='+'L'L(
F 6==?,,6v66r   c                 2   d|j                         v r| j                  |      }n| j                  |      }|| j                  |      | j	                  |      | j                  |      d}t        |j                               rt        j                  di |S y)z1Constructs proto message BareMetalNodePoolConfig.r1   )r/   r<   taintskubeletConfigNr   )
rI   r8   rE   r,   r   rV   rR   rS   r   r'   )r   r   r5   rA   s       r   _node_pool_configz+_BareMetalNodePoolsClient._node_pool_config   s    4#<#<#>>11$7l11$7l###D)##D)--d3	F 6==?--777r   c                    t        |di       }g }|sy|j                         D ]?  \  }}|j                  t        j                  j
                  j                  ||             A t        j                  j                  |      }|S )z*Constructs proto message AnnotationsValue.annotationsNr"   r%   )r   r   r   r   BareMetalNodePoolAnnotationsValuer)   )r   r   r\   r*   r#   r$   annotation_value_messages          r   _annotationsz&_BareMetalNodePoolsClient._annotations   s    $r2K#% !'')
U"))

$
$
5
5
H
HU I  *  (99JJ9  K   $#r   c           	          | j                  |      | j                  |      t        |dd      | j                  |      t        |dd      d}t	        j
                  di |S )z+Constructs proto message BareMetalNodePool.display_nameNversion)namenodePoolConfigdisplayNamer\   bareMetalVersionr   )_node_pool_namerZ   r   r`   r   r]   rU   s      r   _bare_metal_node_poolz/_BareMetalNodePoolsClient._bare_metal_node_pool   sc     $$T*006t^T:((.#D)T:F %%///r   N)__name__
__module____qualname____doc__r
   	Namespacer   r,   r8   r4   r>   rE   rJ   rV   rZ   r`   ri   r   r   r   r   r      s    90::  0::  ( *;*E*E  (2  &*;*E*E 3D3N3N 
"3"="= 
$5$?$? $$0:: $&
0(9(C(C 
0r   r   c                        e Zd ZdZ fdZddZ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dej                  fd
Z xZS )NodePoolsClientz;Client for node pools in Anthos clusters on bare metal API.c                 b    t        t        | 
  di | | j                  j                  | _        y )Nr   )superrp   __init___client7projects_locations_bareMetalClusters_bareMetalNodePools_service)r   rA   	__class__s     r   rs   zNodePoolsClient.__init__   s)    	/4)3F3LL 	Mr   c                     t        j                  |j                               }t        j                  | j
                  |d||d      S )z:Lists Node Pools in the Anthos clusters on bare metal API.)parentbareMetalNodePoolspageSize)field
batch_sizelimitbatch_size_attribute)r   HGkeonpremProjectsLocationsBareMetalClustersBareMetalNodePoolsListRequestRelativeNamer   YieldFromListrv   )r   location_refr~   	page_sizelist_reqs        r   ListzNodePoolsClient.List   sI    ``((*H ##"' r   c                     t        j                  |j                               }| j                  j	                  |      S )z5Gets a GKE On-Prem Bare Metal API node pool resource.)rd   )r   GGkeonpremProjectsLocationsBareMetalClustersBareMetalNodePoolsGetRequestr   rv   Get)r   resource_refreqs      r   DescribezNodePoolsClient.Describe   s5    

Z
Z&&(C ==S!!r   r   c                     | j                  |      | j                  |d      | j                  |d      | j                  |d      d}t        j                  di |}| j                  j                  |      S )z8Deletes a GKE On-Prem Bare Metal API node pool resource.allow_missingvalidate_onlyignore_errors)rd   allowMissingvalidateOnlyignoreErrorsr   )rh   rQ   r   JGkeonpremProjectsLocationsBareMetalClustersBareMetalNodePoolsDeleteRequestrv   Deleter   r   rA   r   s       r   r   zNodePoolsClient.Delete   st     $$T*T?;T?;T?;	F 
]
] 
C ==$$r   c                 &   | j                  |      }|j                         j                         | j                  |d      | j	                  |      | j                  |      d}t        j                  di |}| j                  j                  |      S )z8Creates a GKE On-Prem Bare Metal API node pool resource.r   )ry   r   bareMetalNodePoolbareMetalNodePoolIdr   )
_node_pool_refParentr   rQ   ri   _node_pool_idr   JGkeonpremProjectsLocationsBareMetalClustersBareMetalNodePoolsCreateRequestrv   Create)r   r   node_pool_refrA   r   s        r   r   zNodePoolsClient.Create   s    ''-M&&(557T?;!77=#11$7	F 
]
] 
C ==$$r   c                 2   | j                  |d      | j                  |      t        j                  |t        j                        | j                  |d      | j                  |      d}t        j                  di |}| j                  j                  |      S )z8Updates a GKE On-Prem Bare Metal API node pool resource.r   r   )r   rd   
updateMaskr   r   r   )
rQ   rh   r   get_update_mask)BARE_METAL_NODE_POOL_ARGS_TO_UPDATE_MASKSri   r   IGkeonpremProjectsLocationsBareMetalClustersBareMetalNodePoolsPatchRequestrv   Patchr   s       r   UpdatezNodePoolsClient.Update  s     T?;$$T*!11+GG
 T?;!77=F 
\
\ 
C ==s##r   c                     | j                  |      | j                  |d      d}t        j                  di |}t        j                  || j                  |            }| j                  j                  |      S )z<Enrolls an Anthos On-Prem Bare Metal API node pool resource.r   )r   r   )enrollBareMetalNodePoolRequestry   r   )r   rQ   r   EnrollBareMetalNodePoolRequestJGkeonpremProjectsLocationsBareMetalClustersBareMetalNodePoolsEnrollRequest_node_pool_parentrv   Enroll)r   r   rA   enroll_requestr   s        r   r   zNodePoolsClient.Enroll  st      $11$7T?;F <<FvFN

]
]'5%%d+C ==$$r   c                     | j                  |d      | j                  |      | j                  |d      d}t        j                  di |}| j                  j                  |      S )z>Unenrolls an Anthos On-Prem bare metal API node pool resource.r   r   )r   rd   r   r   )rQ   rh   r   LGkeonpremProjectsLocationsBareMetalClustersBareMetalNodePoolsUnenrollRequestrv   Unenrollr   s       r   r   zNodePoolsClient.Unenroll!  sf     T?;$$T*T?;F
 
_
_ 
C ==!!#&&r   )NN)rj   rk   rl   rm   rs   r   r   r
   rn   r   r   r   r   r   __classcell__)rw   s   @r   rp   rp      st    C"%*44 %%*44 %$*44 $ %*44 %
',66 
'r   rp   N)rm   
__future__r   r   r   apitools.base.pyr   *googlecloudsdk.api_lib.container.gkeonpremr   clustersr   googlecloudsdk.callioper	   r
   2googlecloudsdk.generated_clients.apis.gkeonprem.v1r   r   ClustersClientr   rp   r   r   r   <module>r      sJ    J &  ' ' V B . 5 `h0 7 7 h0Vc'/ c'r   