
    v6                         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 ddlmZ  G d dej(                        Z G d de      Zy)zNUtilities for node pool resources in Anthos standalone clusters on bare metal.    )absolute_import)division)unicode_literals)messages)
list_pager)standalone_clusters)update_mask)arg_parsers)
exceptions)parser_extensions)gkeonprem_v1_messagesc                   H   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 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)_StandaloneNodePoolsClientzFBase class for GKE OnPrem Bare Metal Standalone Node Pool 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_module	NodeTaint)selfr   taint_messagesr   
node_tainttaint_objects         Glib/googlecloudsdk/api_lib/container/gkeonprem/standalone_node_pools.py_node_taintsz'_StandaloneNodePoolsClient._node_taints"   sd    N$r2Ki!'')
++J7lO55EEF *     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   !BareMetalStandaloneNodePoolConfigLabelsValueAdditionalProperty)r   r   r#   additional_property_messagesr%   r&   labels_value_messages          r   _node_labelsz'_StandaloneNodePoolsClient._node_labels/   s    $r2K#% !'')
U"))

;
;
G
G
Z
ZU [  * 	99EE!= 	F 	
   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_filez2_StandaloneNodePoolsClient._node_configs_from_fileE   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 )7Constructs proto message BareMetalStandaloneNodeConfig.nodeIP r2   z,Missing field [nodeIP] in Node configs file.labelsnodeIpr?   r   )r4   r   r5   _node_config_labelsr   BareMetalStandaloneNodeConfig)r   r9   node_ipkwargss       r   r6   z2_StandaloneNodePoolsClient._bare_metal_node_configY   si    ooh+G++
$
8  **;??8R+HIF
 88B6BBr    c                     g }|sy|j                         D ]?  \  }}|j                  t        j                  j                  j                  ||             A t        j                  j	                  |      }|S )r"   Nr$   r'   )r   r   r   rC   r*   r+   )r   r?   r,   r%   r&   r-   s         r   rB   z._StandaloneNodePoolsClient._node_config_labelsi   s    #% lln
U"))

7
7
C
C
V
VU W  % 	55AA!= 	B 	
   r    c                    |j                  d      sy|j                  dd      j                  d      }g }|D ]  }|j                  d      }t        |      dk7  r$t        j                  dj                  |            |j                  t        j                  j                  j                  |d   |d	   
              t        j                  j                  |      }|S )ao  Validates and parses a standalone node label object.

    Args:
      node_labels: str of key-val pairs separated by ';' delimiter.

    Returns:
      If label is valid, returns a dict mapping message LabelsValue to its
      value, otherwise, raise ArgumentTypeError.
      For example,
      {
          'key': LABEL_KEY
          'value': LABEL_VALUE
      }
    r?   Nr>   ;=   z8Node Label [{}] not in correct format, expect KEY=VALUE.r      r$   r'   )r4   splitlenr
   ArgumentTypeErrorformatr   r   rC   r*   r+   )r   r#   input_node_labelsr,   labelkey_val_pairr-   s          r   parse_standalone_node_labelsz7_StandaloneNodePoolsClient.parse_standalone_node_labels~   s     ??8$#"5;;C@#% "[[%l	\	a	++FMM!
 	

 #))

7
7
C
C
V
Vq/a W  # 	55AA!= 	B 	
   r    c                     |j                  dd      | j                  |      d}| j                  t        j                  |      S )r<   znode-ipr>   r@   )r4   rS   _set_config_if_existsr   rC   )r   node_config_argsrE   s      r   standalone_node_configz1_StandaloneNodePoolsClient.standalone_node_config   sJ     #&&y"5334DEF
 %%55v r    c                 v    g }t        |dd      }|r'|D ]"  }|j                  | j                  |             $ |S )r0   r7   N)r   r   rW   )r   r   r7   node_config_flag_valuer9   s        r   _node_configs_from_flagz2_StandaloneNodePoolsClient._node_configs_from_flag   sD    L$T>4@/+D77DE 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;_StandaloneNodePoolsClient._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   )GetFlagr_   anyvaluesr    BareMetalStandaloneKubeletConfigr   r   rE   s      r   _kubelet_configz*_StandaloneNodePoolsClient._kubelet_config   s_    <<.ABd,<='+'L'L(
F 6==?==GGGr    c                 2   d|j                         v r| j                  |      }n| j                  |      }|| j                  |      | j	                  |      | j                  |      d}t        |j                               rt        j                  di |S y)z;Constructs proto message BareMetalStandaloneNodePoolConfig.r3   )r1   r?   taintskubeletConfigNr   )
r^   r:   rZ   r.   r   rk   rg   rh   r   r)   )r   r   r7   rE   s       r   _node_pool_configz,_StandaloneNodePoolsClient._node_pool_config   s    4#<#<#>>11$7l11$7l###D)##D)--d3	F 6==?>>HHH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   BareMetalStandaloneNodePoolAnnotationsValuer+   )r   r   rq   r,   r%   r&   annotation_value_messages          r   _annotationsz'_StandaloneNodePoolsClient._annotations   s    $r2K#% !'')
U"))

5
5
F
F
Y
YU Z  * 	33DD!= 	E 	
 
 $#r    c                     | j                  |      | j                  |      t        |dd      | j                  |      d}t	        j
                  di |S )z5Constructs proto message BareMetalStandaloneNodePool.display_nameN)namenodePoolConfigdisplayNamerq   r   )_node_pool_namero   r   ru   r   rr   rj   s      r    _bare_metal_standalone_node_poolz;_StandaloneNodePoolsClient._bare_metal_standalone_node_pool   sW     $$T*006t^T:((.	F 66@@@r    N)__name__
__module____qualname____doc__r   	Namespacer   r.   r:   r6   rB   rS   rW   rZ   r_   rk   ro   ru   r|   r   r    r   r   r      s    N0::  0::  , *;*E*E  (C  *) X	*;*E*E 3D3N3N 
"3"="= 
$5$?$? $$0:: $*	A3D3N3N 	Ar    r   c                   f    e Zd ZdZ fdZ	 	 ddej                  dej                  fdZ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                  dej                  fdZ xZS )StandaloneNodePoolsClientzFClient for node pools in Anthos clusters on bare metal standalone API.c                 b    t        t        | 
  di | | j                  j                  | _        y )Nr   )superr   __init___clientKprojects_locations_bareMetalStandaloneClusters_bareMetalStandaloneNodePools_service)r   rE   	__class__s     r   r   z"StandaloneNodePoolsClient.__init__	  s*    	
#T3=f=`` 	Mr    location_refreturnc                     t        j                  |j                               }t        j                  | j
                  |d||d      S )zELists Node Pools in the Anthos clusters on bare metal standalone API.)parentbareMetalStandaloneNodePoolspageSize)field
batch_sizelimitbatch_size_attribute)r   \GkeonpremProjectsLocationsBareMetalStandaloneClustersBareMetalStandaloneNodePoolsListRequestRelativeNamer   YieldFromListr   )r   r   r   	page_sizelist_reqs        r   ListzStandaloneNodePoolsClient.List  sK     {{((*H ##,' r    c                     t        j                  |j                               }| j                  j	                  |      S )z@Gets a GKE On-Prem Bare Metal API standalone node pool resource.)rx   )r   [GkeonpremProjectsLocationsBareMetalStandaloneClustersBareMetalStandaloneNodePoolsGetRequestr   r   Get)r   resource_refreqs      r   Describez"StandaloneNodePoolsClient.Describe#  s5    

u
u&&(C ==S!!r    r   c           	          t        j                  t        j                  | j                  |      | j	                  |d            | j                  |            }| j                  j                  |      S )zEnrolls an Anthos On-Prem Bare Metal API standalone node pool resource.

    Args:
      args: parser_extensions.Namespace, known args specified on the command
        line.

    Returns:
      (Operation) The response message.
    validate_only)bareMetalStandaloneNodePoolIdvalidateOnly)(enrollBareMetalStandaloneNodePoolRequestr   )r   ^GkeonpremProjectsLocationsBareMetalStandaloneClustersBareMetalStandaloneNodePoolsEnrollRequest(EnrollBareMetalStandaloneNodePoolRequest_standalone_node_pool_idrf   _standalone_node_pool_parentr   Enrollr   r   r   s      r   r   z StandaloneNodePoolsClient.Enroll+  se     
x
x1@1i1i*.*G*G*MdO<2
 006C ==$$r    c                     | j                  |d      | j                  |      | j                  |d      d}t        j                  di |}| j                  j                  |      S )zUnenrolls an Anthos On-Prem bare metal API standalone node pool resource.

    Args:
      args: parser_extensions.Namespace, known args specified on the command
        line.

    Returns:
      (Operation) The response message.
    allow_missingr   )allowMissingrx   r   r   )rf   _standalone_node_pool_namer   `GkeonpremProjectsLocationsBareMetalStandaloneClustersBareMetalStandaloneNodePoolsUnenrollRequestr   Unenrollr   r   rE   r   s       r   r   z"StandaloneNodePoolsClient.UnenrollA  sf     T?;//5T?;F
 
z
z 
C ==!!#&&r    c                     | j                  |      | j                  |d      | j                  |d      | j                  |d      d}t        j                  di |}| j                  j                  |      S )zCDeletes a GKE On-Prem Bare Metal API standalone node pool resource.r   r   ignore_errors)rx   r   r   ignoreErrorsr   )r   rf   r   ^GkeonpremProjectsLocationsBareMetalStandaloneClustersBareMetalStandaloneNodePoolsDeleteRequestr   Deleter   s       r   r   z StandaloneNodePoolsClient.DeleteW  st    
 //5T?;T?;T?;	F 
x
x 
C ==$$r    c                 &   | j                  |      }|j                         j                         | j                  |d      | j	                  |      | j                  |      d}t        j                  di |}| j                  j                  |      S )zCCreates a GKE On-Prem Bare Metal API standalone node pool resource.r   )r   r   bareMetalStandaloneNodePoolr   r   )
_node_pool_refParentr   rf   r|   r   r   ^GkeonpremProjectsLocationsBareMetalStandaloneClustersBareMetalStandaloneNodePoolsCreateRequestr   Create)r   r   node_pool_refrE   r   s        r   r   z StandaloneNodePoolsClient.Createg  s    ''-M&&(557T?;'+'L'L(
 *.)F)Ft)LF 
x
x 
C ==$$r    c           	      ,   t        j                  | j                  |d      | j                  |      t	        j
                  |t        j                        | j                  |d      | j                  |            }| j                  j                  |      S )zCUpdates a GKE On-Prem Bare Metal API standalone node pool resource.r   r   )r   rx   
updateMaskr   r   )
r   ]GkeonpremProjectsLocationsBareMetalStandaloneClustersBareMetalStandaloneNodePoolsPatchRequestrf   r   r	   get_update_mask4BARE_METAL_STANDALONE_NODE_POOL_ARGS_TO_UPDATE_MASKSr|   r   Patchr   s      r   Updatez StandaloneNodePoolsClient.Updatew  s     
w
w\\$8,,T2..LL
 \\$8$($I$I%
C ==s##r    )NN)r}   r~   r   r   r   protorpc_messageMessager   r   r   r   r   r   r   r   r   __classcell__)r   s   @r   r   r     s    N 	$,,
 ("%#--%%,'#--'',%#--%% %*44 % $#--$$r    r   N)r   
__future__r   r   r   apitools.base.protorpcliter   r   apitools.base.pyr   *googlecloudsdk.api_lib.container.gkeonpremr   r	   googlecloudsdk.callioper
   r   r   2googlecloudsdk.generated_clients.apis.gkeonprem.v1r   r   StandaloneClustersClientr   r   r   r    r   <module>r      sS    U &  ' C ' J B / . 5 gdA!4!M!M dANA$ : A$r    