
                             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
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\R,                  5      r " S S\5      rg)zEUtilities for gkeonprem API clients for Bare Metal cluster resources.    )absolute_import)division)unicode_literals)Optional)
exceptions)
list_pager)client)update_mask)arg_parsers)parser_extensions)
properties)gkeonprem_v1_messagesc                      \ rS rSrSrS\R                  4S jrS\R                  4S jrS r	S\R                  4S jr
S\R                  4S jrS\R                  4S	 jrS\R                  4S
 jrS rS\R                  4S jrS\R                  4S jrS\R                  4S jrS\R                  4S jrS\R                  4S jrS\R                  4S jrS\R                  4S jrS\R                  4S jrS\R                  4S jrS rS\R                  4S jrS rS\R                  4S jrS rS rS\R                  4S jrS\R                  4S jrS\R                  4S jr S\R                  4S jr!S\R                  4S jr"S\R                  4S  jr#S\R                  4S! jr$S\R                  4S" jr%S\R                  4S# jr&S\R                  4S$ jr'S\R                  4S% jr(S\R                  4S& jr)S\R                  4S' jr*S\R                  4S( jr+S\R                  4S) jr,S\R                  4S* jr-S\R                  4S+ jr.S\R                  4S, jr/S\R                  4S- jr0S\R                  4S. jr1S\R                  4S/ jr2S\R                  4S0 jr3S\R                  4S1 jr4S\R                  4S2 jr5S3 r6S4 r7S\R                  4S5 jr8S\R                  4S6 jr9S\R                  4S7 jr:S\R                  4S8 jr;S\R                  4S9 jr<S\R                  4S: jr=S\R                  4S; jr>S\R                  4S< jr?S\R                  4S= jr@S\R                  4S> jrAS\R                  4S? jrBS\R                  4S@ jrCS\R                  4SA jrDSB rES\R                  4SC jrFS\R                  4SD jrGS\R                  4SE jrHS\R                  4SF jrIS\R                  4SG jrJS\R                  SH\K\LR                     4SI jrNS\R                  4SJ jrOSKrPgL)M_BareMetalClusterClient"   z1Base class for GKE OnPrem Bare Metal API clients.argsc                 >    [        US0 5      nU R                  U5      $ )z=Constructs proto message AnnotationsValue for create command.annotations)getattr_dict_to_annotations_message)selfr   r   s      Elib/googlecloudsdk/api_lib/container/gkeonprem/bare_metal_clusters.py_create_annotations+_BareMetalClusterClient._create_annotations%   s!    $r2K,,[99    c                 b    0 U R                  U5      EUR                  EnU R                  U5      $ )zEConstructs proto message AnnotationsValue for adding new annotations.)_get_current_annotationsadd_annotationsr   )r   r   results      r   _add_annotations(_BareMetalClusterClient._add_annotations+   s3    L--d3Lt7K7KLF,,V44r   c                 >    [         R                  R                  5       $ )zCConstructs proto message AnnotationsValue for clearing annotations.)messagesBareMetalClusterAnnotationsValue)r   s    r   _clear_annotations*_BareMetalClusterClient._clear_annotations1   s    $$5577r   c                     U R                  U5      nUR                  5        VVs0 s H  u  p4X1R                  ;  d  M  X4_M     nnnU R                  U5      $ s  snnf )zCConstructs proto message AnnotationsValue for removing annotations.)r   itemsremove_annotationsr   )r   r   curr_annotationskeyvalueupdated_annotationss         r   _remove_annotations+_BareMetalClusterClient._remove_annotations5   si    44T: +0022JC--- 	
2   ,,-@AAs
   AAc                 8    U R                  UR                  5      $ )zBConstructs proto message AnnotationsValue for setting annotations.)r   set_annotationsr   r   s     r   _set_annotations(_BareMetalClusterClient._set_annotations@   s    ,,T-A-ABBr   c                     UR                   R                  R                  5       nU R                  U5      n0 nUR                  (       a5  UR                  R
                   H  nUR                  XER                  '   M     U$ )z+Fetches the standalone cluster annotations.)CONCEPTSclusterParseDescriber   additionalPropertiesr-   r,   )r   r   cluster_refcluster_responser+   
annotations         r   r   0_BareMetalClusterClient._get_current_annotationsD   sj    --''--/K}}[1##(44II*+5+;+;( J r   c                     UR                  5       nSU;   a  U R                  U5      $ SU;   a  U R                  5       $ SU;   a  U R                  U5      $ SU;   a  U R	                  U5      $ g)z=Constructs proto message AnnotationsValue for update command.r   clear_annotationsr*   r2   N)GetSpecifiedArgsDictr    r&   r/   r4   )r   r   specified_argss      r   _update_annotations+_BareMetalClusterClient._update_annotationsP   sw    ..0NN*""4((n,$$&&~-%%d++N*""4(( +r   c                     / nU(       d  gUR                  5        H;  u  p4UR                  [        R                  R                  R                  X4S95        M=     [        R                  R	                  US9nU$ )z9Converts key-val pairs to proto message AnnotationsValue.Nr,   r-   r;   )r)   appendr#   r$   r%   AdditionalProperty)r   r   additional_property_messagesr,   r-   annotation_value_messages         r   r   4_BareMetalClusterClient._dict_to_annotations_message_   s~    #% !'')
"))

#
#
4
4
G
G H  *  (88II9  J   $#r   c                     UR                   S   S:X  a  U R                  U5      $ UR                   S   S:X  a  U R                  U5      $ g)z*Constructs proto message AnnotationsValue.updatecreateN)command_pathrD   r   r3   s     r   _annotations$_BareMetalClusterClient._annotationsq   sM    (%%d++(%%d++r   c                     [        US/ 5      [        US/ 5      S.n[        UR                  5       5      (       a  [        R                  " S0 UD6$ g)z7Constructs proto message BareMetalIslandModeCidrConfig.'island_mode_service_address_cidr_blocks#island_mode_pod_address_cidr_blocks)serviceAddressCidrBlockspodAddressCidrBlocksN )r   anyvaluesr#   BareMetalIslandModeCidrConfigr   r   kwargss      r   _island_mode_cidr_config0_BareMetalClusterClient._island_mode_cidr_config{   sW     %,;R%
 !(7!
	F 6==?33=f==r   c                     SU R                  U5      0nU R                  U5      (       a  [        R                  " S0 UD6$ g )NenabledrZ   )sr_iov_config_enabledIsSetr#   BareMetalSrIovConfigr^   s      r   _sr_iov_config&_BareMetalClusterClient._sr_iov_config   sA    4--d3F zz&**4V44r   c                 X    SUR                  5       ;   a  gSUR                  5       ;   a  gg )Nenable_sr_iov_configTdisable_sr_iov_configFrB   r3   s     r   rd   -_BareMetalClusterClient.sr_iov_config_enabled   s-    !:!:!<<	 D$=$=$?	?r   c                     SU R                  US5      0nU R                  U5      (       a  [        R                  " S0 UD6$ g )Nrc   enable_multi_nic_configrZ   )GetFlagre   r#   (BareMetalMultipleNetworkInterfacesConfigr^   s      r   #_multiple_network_interfaces_config;_BareMetalClusterClient._multiple_network_interfaces_config   sD     	4<<&?@F zz&>>HHHr   c                     U R                  U5      U R                  US5      U R                  U5      U R                  U5      S.nU R	                  U5      (       a  [
        R                  " S0 UD6$ g)z0Constructs proto message BareMetalNetworkConfig.enable_advanced_networking)islandModeCidradvancedNetworkingmultipleNetworkInterfacesConfigsrIovConfigNrZ   )r`   rp   rr   rg   re   r#   BareMetalNetworkConfigr^   s      r   _network_config'_BareMetalClusterClient._network_config   sl     77="ll41MN44T:**40F zz&,,6v66r   c                     [        USS5      [        USS5      S.n[        UR                  5       5      (       a  [        R                  " S0 UD6$ g)z,Constructs proto message BareMetalVipConfig.control_plane_vipNingress_vip)controlPlaneVip
ingressViprZ   )r   r[   r\   r#   BareMetalVipConfigr^   s      r   _vip_config#_BareMetalClusterClient._vip_config   sN     #4)<dCdM48F
 6==?((2622r   c                     S[        USS5      0n[        UR                  5       5      (       a  [        R                  " S0 UD6$ g)z-Constructs proto message BareMetalPortConfig.controlPlaneLoadBalancerPort control_plane_load_balancer_portNrZ   )r   r[   r\   r#   BareMetalPortConfigr^   s      r   _port_config$_BareMetalClusterClient._port_config   sG     	'4d)
F 6==?))3F33r   c                     UR                   (       d  / $ UR                   R                  S/ 5      nU(       d  [        R                  " SS5      e/ nU H#  nUR	                  U R                  U5      5        M%     U$ )z-Constructs proto message field address_pools.addressPools"--metal_lb_address_pools_from_filez<Missing field [addressPools] in Metal LB address pools file.) metal_lb_address_pools_from_filegetr   BadArgumentExceptionrI   _address_pool)r   r   address_poolsaddress_pool_messagesaddress_pools        r   _address_pools_from_file0_BareMetalClusterClient._address_pools_from_file   s|    00i99==M ++
.
H 
 %""4#5#5l#CD & ! r   c                 <   UR                  S/ 5      nU(       d  [        R                  " SS5      eUR                  SS5      nU(       d  [        R                  " SS5      eUUR                  SS5      UR                  SS5      US	.n[        R                  " S
0 UD6$ )z:Constructs proto message BareMetalLoadBalancerAddressPool.	addressesr   z9Missing field [addresses] in Metal LB address pools file.poolNz4Missing field [pool] in Metal LB address pools file.avoidBuggyIPsmanualAssignr   avoidBuggyIpsr   r   rZ   )r   r   r   r#    BareMetalLoadBalancerAddressPool)r   r   r   r   r_   s        r   r   %_BareMetalClusterClient._address_pool   s      b1I++
.
E 
 FD)D++
.
@  %))/4@$((>	F 44>v>>r   c                 "   UR                   (       d  / $ / nUR                    Hi  nUR                  [        R                  " UR	                  S/ 5      UR	                  SS 5      UR	                  SS 5      UR	                  SS 5      S95        Mk     U$ )Nr   avoid-buggy-ipsmanual-assignr   r   )metal_lb_address_poolsrI   r#   r   r   r   r   r   r   s       r   _address_pools_from_flag0_BareMetalClusterClient._address_pools_from_flag   s    &&iM33

3
3$((b9(,,->E'++OTB##FD1	 4 r   c                     UR                  SS5      nU(       d  [        R                  " SS5      eUU R                  UR                  S0 5      5      S.n[        R
                  " S0 UD6$ )-Constructs proto message BareMetalNodeConfig.nodeIP /--metal_lb_load_balancer_node_configs_from_filez5Missing field [nodeIP] in Metal LB Node configs file.labelsnodeIpr   rZ   r   r   r   _node_labelsr#   BareMetalNodeConfig)r   metal_lb_node_confignode_ipr_   s       r   _metal_lb_node_config-_BareMetalClusterClient._metal_lb_node_config  sn    "&&x4G++
;
A  ##$8$<$<Xr$JKF
 ''1&11r   c                     UR                   (       d  / $ UR                   R                  S/ 5      nU(       d  [        R                  " SS5      e/ nU H#  nUR	                  U R                  U5      5        M%     U$ ),Constructs proto message field node_configs.nodeConfigsr   z:Missing field [nodeConfigs] in Metal LB Node configs file.)-metal_lb_load_balancer_node_configs_from_filer   r   r   rI   r   )r   r   metal_lb_node_configsmetal_lb_node_configs_messagesr   s        r    _metal_lb_node_configs_from_file8_BareMetalClusterClient._metal_lb_node_configs_from_file  s    ==i 	::>>2	
  !++
;
F 
 &(" 5$++

$
$%9
: !6
 *)r   c                    UR                  S5      (       d  gUR                  SS5      R                  S5      n/ nU H  nUR                  S5      n[        U5      S:w  a%  [        R                  " SR                  U5      5      eUR                  [        R                  R                  R                  US   US	   S
95        M     [        R                  R                  US9nU$ )a8  Validates and parses a 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      rG   rH   )r   splitlenr   ArgumentTypeErrorformatrI   r#   r   LabelsValuerJ   )r   node_labelsinput_node_labelsrK   labelkey_val_pairlabels_value_messages          r   parse_node_labels)_BareMetalClusterClient.parse_node_labels8  s     ??8$$#"5;;C@#% "[[%l	\	a	++FMM!
 	

 #))

&
&
2
2
E
Eq/a F  # $77CC9 D   r   c                     UR                  SS5      U R                  U5      S.n[        UR                  5       5      (       a  [        R
                  " S0 UD6$ g)r   znode-ipr   r   NrZ   )r   r   r[   r\   r#   r   )r   node_config_argsr_   s      r   node_config#_BareMetalClusterClient.node_configa  sT     #&&y"5(()9:F
 6==?))3F33r   c                     UR                   (       a  [        US/ 5      O/ nU Vs/ s H  o0R                  U5      PM     sn$ s  snf )r   #metal_lb_load_balancer_node_configs)r   r   r   )r   r   node_config_flag_valuer   s       r    _metal_lb_node_configs_from_flag8_BareMetalClusterClient._metal_lb_node_configs_from_flagm  sR     33 	;R@  :P9O+%9O  s   Ac                     / n[        US0 5      nU(       d  / $ UR                  5        H9  nU R                  U5      nUR                  [        R
                  " S0 UD65        M;     U$ )#Constructs proto message NodeTaint."metal_lb_load_balancer_node_taintsrZ   r   r)   _parse_node_taintrI   r#   	NodeTaintr   r   taint_messagesnode_taints
node_tainttaint_objects         r   _metal_lb_node_taints-_BareMetalClusterClient._metal_lb_node_taintsy  se    N$ DbIKi!'')
++J7lH..>>? * r   c                    [        US0 5      n/ nU(       d  gUR                  5        H;  u  pEUR                  [        R                  R
                  R                  XES95        M=     [        R                  R                  US9nU$ )%Constructs proto message LabelsValue."metal_lb_load_balancer_node_labelsNrG   rH   r   r)   rI   r#   BareMetalNodePoolConfigr   rJ   r   r   r   rK   r,   r-   r   s          r   _metal_lb_labels(_BareMetalClusterClient._metal_lb_labels  s    $ DbIK#% !'')
"))

*
*
6
6
I
I J  * $;;GG9 H   r   c                 B   SUR                  5       ;   a  U R                  U5      nOU R                  U5      nUU R                  U5      U R	                  U5      U R                  U5      S.n[        UR                  5       5      (       a  [        R                  " S0 UD6$ g)1Constructs proto message BareMetalNodePoolConfig.r   r   r   taintskubeletConfigNrZ   )
rB   r   r   r   r   _metal_lb_kubelet_configr[   r\   r#   r   )r   r   r   r_   s       r   (_metal_lb_load_balancer_node_pool_config@_BareMetalClusterClient._metal_lb_load_balancer_node_pool_config  s    
 	8$$&	' #CCDI"CCDI -''-,,T266t<	F 6==?--777r   c                 X    SUR                  5       ;   a  gSUR                  5       ;   a  gg )N3enable_metal_lb_load_balancer_serialize_image_pullsF4disable_metal_lb_load_balancer_serialize_image_pullsTrl   r3   s     r   (_metal_lb_serialize_image_pulls_disabled@_BareMetalClusterClient._metal_lb_serialize_image_pulls_disabled  s9     	>$$&	' >$$&	' r   c                     U R                  US5      U R                  US5      U R                  U5      S.nU R                  U5      (       a  [        R                  " S0 UD6$ g )N%metal_lb_load_balancer_registry_burst(metal_lb_load_balancer_registry_pull_qpsregistryBurstregistryPullQpsserializeImagePullsDisabledrZ   )rp   r   re   r#   BareMetalKubeletConfigr^   s      r   r   0_BareMetalClusterClient._metal_lb_kubelet_config  sg    9
  <<<
 99$?
F zz&,,6v66r   c                     SU R                  U5      0n[        UR                  5       5      (       a  [        R                  " S0 UD6$ g)z=Constructs proto message BareMetalLoadBalancerNodePoolConfig.nodePoolConfigNrZ   )r   r[   r\   r#   #BareMetalLoadBalancerNodePoolConfigr^   s      r   _metal_lb_node_pool_config2_BareMetalClusterClient._metal_lb_node_pool_config  sE     	$GGMF 6==?99CFCCr   c                    SUR                  5       ;   a  U R                  U5      nOU R                  U5      nUU R                  U5      S.n[	        UR                  5       5      (       a  [        R                  " S0 UD6$ g)z0Constructs proto message BareMetalMetalLbConfig.r   )r   loadBalancerNodePoolConfigNrZ   )rB   r   r   r  r[   r\   r#   BareMetalMetalLbConfig)r   r   r   r_   s       r   _metal_lb_config(_BareMetalClusterClient._metal_lb_config  su    )T-F-F-HH33D9m33D9m%&*&E&Ed&KF
 6==?,,6v66r   c                     S[        USS5      0n[        UR                  5       5      (       a  [        R                  " S0 UD6$ g)z1Constructs proto message BareMetalManualLbConfig.rc   enable_manual_lbFNrZ   )r   r[   r\   r#   BareMetalManualLbConfigr^   s      r   _manual_lb_config)_BareMetalClusterClient._manual_lb_config  sD     	74!3U;F 6==?--777r   c                    U R                  U5      U R                  U5      U R                  U5      U R                  U5      U R	                  U5      S.n[        UR                  5       5      (       a  [        R                  " S0 UD6$ g)z5Constructs proto message BareMetalLoadBalancerConfig.)	vipConfig
portConfigmetalLbConfigmanualLbConfigbgpLbConfigNrZ   )	r   r   r  r  _bgp_lb_configr[   r\   r#   BareMetalLoadBalancerConfigr^   s      r   _load_balancer_config-_BareMetalClusterClient._load_balancer_config  s{     %%d+''-..t4006**40F 6==?11;F;;r   c                     U R                  U5      U R                  US5      U R                  U5      U R                  U5      S.n[	        UR                  5       5      (       a  [        R                  " S0 UD6$ g)z.Constructs proto message BareMetalBgpLbConfig.bgp_asn)r   asnbgpPeerConfigsr	  NrZ   )_bgp_address_poolsrp   _bgp_peer_configs#_bgp_load_balancer_node_pool_configr[   r\   r#   BareMetalBgpLbConfigr^   s      r   r  &_BareMetalClusterClient._bgp_lb_config  sp     //5||D),006&*&N&N'
	F 6==?**4V44r   c                 (   SUR                  5       ;  a  / $ / nUR                   Hi  nUR                  [        R                  " UR                  S/ 5      UR                  SS5      UR                  SS5      UR                  SS5      S95        Mk     U$ )zXConstructs repeated proto message BareMetalBgpLbConfig.BareMetalLoadBalancerAddressPool.bgp_address_poolsr   r   Nr   r   r   )rB   r&  rI   r#   r   r   r   s       r   r   *_BareMetalClusterClient._bgp_address_pools  s    $";";"==iM..

3
3$((b9(,,->E'++OTB##FD1	 / r   c           	         SUR                  5       ;  a  / $ / nU R                  US5       HZ  n[        R                  " UR	                  SS5      UR	                  S/ 5      UR	                  SS5      S9nUR                  U5        M\     U$ )z9Constructs repeated proto message BareMetalBgpPeerConfig.bgp_peer_configsr  Nzcontrol-plane-nodesip)r  controlPlaneNodes	ipAddress)rB   rp   r#   BareMetalBgpPeerConfigr   rI   )r   r   retpeer_configmsgs        r   r!  )_BareMetalClusterClient._bgp_peer_configs(  s    !:!:!<<i
C||D*<=++ooeT*'OO,A2FOOD$/c
 
jjo > Jr   c                     SU R                  U5      0n[        UR                  5       5      (       a  [        R                  " S0 UD6$ g)zRConstructs proto message BareMetalBgpLbConfig.BareMetalLoadBalancerNodePoolConfig.r  NrZ   )_bgp_node_pool_configr[   r\   r#   r  r^   s      r   r"  ;_BareMetalClusterClient._bgp_load_balancer_node_pool_config8  sE    
 	$44T:F 6==?99CFCCr   c                     U R                  U5      U R                  U5      U R                  U5      U R                  U5      S.n[	        UR                  5       5      (       a  [        R                  " S0 UD6$ g)zjConstructs proto message BareMetalBgpLbConfig.BareMetalLoadBalancerNodePoolConfig.BareMetalNodePoolConfig.)r   r   r   r   NrZ   )_bgp_load_balancer_node_labels_bgp_load_balancer_node_configs_bgp_load_balancer_node_taints!_bgp_load_balancer_kubelet_configr[   r\   r#   r   r^   s      r   r3  -_BareMetalClusterClient._bgp_node_pool_configD  sm     55d;;;DA55d;??E	F 6==?--777r   c                 X    SUR                  5       ;   a  gSUR                  5       ;   a  gg )N/disable_bgp_load_balancer_serialize_image_pullsT.enable_bgp_load_balancer_serialize_image_pullsFrl   r3   s     r   #_bgp_serialize_image_pulls_disabled;_BareMetalClusterClient._bgp_serialize_image_pulls_disabledP  s9     	:$$&	' 8$$&	' r   c                     U R                  US5      U R                  US5      U R                  U5      S.nU R                  U5      (       a  [        R                  " S0 UD6$ g)zConstructs proto message BareMetalBgpLbConfig.BareMetalLoadBalancerNodePoolConfig.BareMetalNodePoolConfig.BareMetalKubeletConfig. bgp_load_balancer_registry_burst#bgp_load_balancer_registry_pull_qpsr   NrZ   )rp   r>  re   r#   r  r^   s      r   r9  9_BareMetalClusterClient._bgp_load_balancer_kubelet_config`  sg    
 d,NO<<7
 (,'O'O(
F zz&,,6v66r   c                     SUR                  5       ;  a  / $ / nU R                  US5       H#  nUR                  U R                  U5      5        M%     U$ )zConstructs repeated proto message BareMetalBgpLbConfig.BareMetalLoadBalancerNodePoolConfig.BareMetalNodePoolConfig.BareMetalNodeConfig.bgp_load_balancer_node_configs)rB   rp   rI   r   )r   r   node_configsr   s       r   r7  7_BareMetalClusterClient._bgp_load_balancer_node_configsq  sU    't/H/H/JJiL||D*JK$**;78 L r   c                     SUR                  5       ;  a  g/ nUR                  R                  5        H;  u  p4UR                  [        R
                  R                  R                  X4S95        M=     [        R
                  R                  US9nU$ )zvConstructs proto message BareMetalBgpLbConfig.BareMetalLoadBalancerNodePoolConfig.BareMetalNodePoolConfig.LabelsValue.bgp_load_balancer_node_labelsNrG   rH   )rB   rI  r)   rI   r#   r   r   rJ   )r   r   rK   r,   r-   r   s         r   r6  6_BareMetalClusterClient._bgp_load_balancer_node_labels|  s    &d.G.G.II#% 88>>@
"))

*
*
6
6
I
I J  A $;;GG9 H   r   c                     SUR                  5       ;  a  / $ U R                  US0 5      n/ nUR                  5        H9  nU R                  U5      nUR	                  [
        R                  " S0 UD65        M;     U$ )z,Constructs repeated proto message NodeTaint.bgp_load_balancer_node_taintsrZ   )rB   rp   r)   r   rI   r#   r   )r   r   r   r   r   r   s         r   r8  6_BareMetalClusterClient._bgp_load_balancer_node_taints  sw    &d.G.G.IIi,,t%DbIKN!'')
++J7lH..>>? * r   c                     [        USS5      [        USS5      S.n[        UR                  5       5      (       a  [        R                  " S0 UD6$ g),Constructs proto message BareMetalLvpConfig.lvp_share_pathNlvp_share_storage_classpathstorageClassrZ   r   r[   r\   r#   BareMetalLvpConfigr^   s      r   _lvp_config#_BareMetalClusterClient._lvp_config  sO     .5&?FF
 6==?((2622r   c                     U R                  U5      [        USS5      S.n[        UR                  5       5      (       a  [        R
                  " S0 UD6$ g)z1Constructs proto message BareMetalLvpShareConfig.lvp_share_path_pv_countN)	lvpConfigsharedPathPvCountrZ   )rW  r   r[   r\   r#   BareMetalLvpShareConfigr^   s      r   _lvp_share_config)_BareMetalClusterClient._lvp_share_config  sP     %%d+$T+DdKF
 6==?--777r   c                     [        USS5      [        USS5      S.n[        UR                  5       5      (       a  [        R                  " S0 UD6$ g)rO  lvp_node_mounts_config_pathN$lvp_node_mounts_config_storage_classrR  rZ   rU  r^   s      r   _lvp_node_mounts_config/_BareMetalClusterClient._lvp_node_mounts_config  sR     ;TB8$
F 6==?((2622r   c                     U R                  U5      U R                  U5      S.n[        UR                  5       5      (       a  [        R
                  " S0 UD6$ g)z0Constructs proto message BareMetalStorageConfig.)lvpShareConfiglvpNodeMountsConfigNrZ   )r^  rc  r[   r\   r#   BareMetalStorageConfigr^   s      r   _storage_config'_BareMetalClusterClient._storage_config  sQ     006#;;DAF
 6==?,,6v66r   c                     / nU(       d  gUR                  5        H;  u  p4UR                  [        R                  R                  R                  X4S95        M=     [        R                  R	                  US9nU$ )r   NrG   rH   )r)   rI   r#   r   r   rJ   )r   r   rK   r,   r-   r   s         r   r   $_BareMetalClusterClient._node_labels  s{    #% lln
"))

&
&
2
2
E
E F  % $77CC9 D   r   c                     UR                  SS5      nU(       d  [        R                  " SS5      eUU R                  UR                  S0 5      5      S.n[        R
                  " S0 UD6$ )r   r   r   &--control_plane_node_configs_from_filez:Missing field [nodeIP] in Control Plane Node configs file.r   r   rZ   r   )r   control_plane_node_configr   r_   s       r   _control_plane_node_config2_BareMetalClusterClient._control_plane_node_config  sp    '++Hb9G++
2
F  ##%))(B7
F ''1&11r   c                     UR                   (       d  / $ UR                   R                  S/ 5      nU(       d  [        R                  " SS5      e/ nU H#  nUR	                  U R                  U5      5        M%     U$ )r   r   rn  z?Missing field [nodeConfigs] in Control Plane Node configs file.)$control_plane_node_configs_from_filer   r   r   rI   rp  )r   r   control_plane_node_configs#control_plane_node_configs_messagesro  s        r   %_control_plane_node_configs_from_file=_BareMetalClusterClient._control_plane_node_configs_from_file  s     44i!%!J!J!N!Nr" &++
2
K 
 +-'%?!)00

)
)*C
D &@
 /.r   c                     / n[        USS5      nU(       a)  U H#  nUR                  U R                  U5      5        M%     U$ )r   rt  N)r   rI   r   )r   r   rF  r   r   s        r   %_control_plane_node_configs_from_flag=_BareMetalClusterClient._control_plane_node_configs_from_flag  sG     L$T+GN/+D,,[9: 0 r   c                     / n[        US0 5      nU(       d  / $ UR                  5        H9  nU R                  U5      nUR                  [        R
                  " S0 UD65        M;     U$ )r   control_plane_node_taintsrZ   r   r   s         r   _control_plane_node_taints2_BareMetalClusterClient._control_plane_node_taints  se    N$ ;R@Ki!'')
++J7lH..>>? * r   c                    [        US0 5      n/ nU(       d  gUR                  5        H;  u  pEUR                  [        R                  R
                  R                  XES95        M=     [        R                  R                  US9nU$ )r   control_plane_node_labelsNrG   rH   r   r   s          r   _control_plane_node_labels2_BareMetalClusterClient._control_plane_node_labels%  s    $ ;R@K#% !'')
"))

*
*
6
6
I
I J  * $;;GG9 H   r   c                 B   SUR                  5       ;   a  U R                  U5      nOU R                  U5      nUU R                  U5      U R	                  U5      U R                  U5      S.n[        UR                  5       5      (       a  [        R                  " S0 UD6$ g)r   rs  r   NrZ   )
rB   rv  ry  r  r}  _control_plane_kubelet_configr[   r\   r#   r   )r   r   rF  r_   s       r   _node_pool_config)_BareMetalClusterClient._node_pool_config9  s    -1J1J1LL??El??El $11$711$7;;DA	F 6==?--777r   c                 X    SUR                  5       ;   a  gSUR                  5       ;   a  gg )N+disable_control_plane_serialize_image_pullsT*enable_control_plane_serialize_image_pullsFrl   r3   s     r   -_control_plane_serialize_image_pulls_disabledE_BareMetalClusterClient._control_plane_serialize_image_pulls_disabledL  s9     	6$$&	' 4$$&	' r   c                     U R                  US5      U R                  US5      U R                  U5      S.nU R                  U5      (       a  [        R                  " S0 UD6$ g )Ncontrol_plane_registry_pull_qpscontrol_plane_registry_burst)r   r   r   rZ   )rp   r  re   r#   r  r^   s      r   r  5_BareMetalClusterClient._control_plane_kubelet_config\  sb    <<3
 d,JK>>tDF zz&,,6v66r   c                     SU R                  U5      0n[        UR                  5       5      (       a  [        R                  " S0 UD6$ g)z=Constructs proto message BareMetalControlPlaneNodePoolConfig.r  NrZ   )r  r[   r\   r#   #BareMetalControlPlaneNodePoolConfigr^   s      r   _control_plane_node_pool_config7_BareMetalClusterClient._control_plane_node_pool_configj  sE     	$006F 6==?99CFCCr   c                     / n[        USS5      nU(       a<  UR                  5        H(  u  pEUR                  [        R                  " XES95        M*     U$ )z4Constructs proto message BareMetalApiServerArgument.api_server_argsN)argumentr-   )r   r)   rI   r#   BareMetalApiServerArgument)r   r   r  api_server_args_flag_valuer,   vals         r   _api_server_args(_BareMetalClusterClient._api_server_argsu  sS    O!(/@$!G!0668(#//H	
 9
 r   c                     U R                  U5      U R                  U5      S.n[        UR                  5       5      (       a  [        R
                  " S0 UD6$ g)z5Constructs proto message BareMetalControlPlaneConfig.)controlPlaneNodePoolConfigapiServerArgsNrZ   )r  r  r[   r\   r#   BareMetalControlPlaneConfigr^   s      r   _control_plane_config-_BareMetalClusterClient._control_plane_config  sV     '+&J&J'
 ..t4	F 6==?11;F;;r   c                     [        USS5      [        US/ 5      S.n[        UR                  5       5      (       a  [        R                  " S0 UD6$ g)z.Constructs proto message BareMetalProxyConfig.uriNno_proxy)r  noProxyrZ   )r   r[   r\   r#   BareMetalProxyConfigr^   s      r   _proxy_config%_BareMetalClusterClient._proxy_config  sM     tUD)4R0F
 6==?**4V44r   c                     S[        USS5      0n[        UR                  5       5      (       a  [        R                  " S0 UD6$ g)z:Constructs proto message BareMetalClusterOperationsConfig.enableApplicationLogsenable_application_logsNrZ   )r   r[   r\   r#    BareMetalClusterOperationsConfigr^   s      r   _cluster_operations_config2_BareMetalClusterClient._cluster_operations_config  sD     	 /H$!OF 6==?66@@@r   c                     S[        US/ 5      0n[        UR                  5       5      (       a  [        R                  " S0 UD6$ g)z4Constructs proto message BareMetalMaintenanceConfig.maintenanceAddressCidrBlocksmaintenance_address_cidr_blocksNrZ   )r   r[   r\   r#   BareMetalMaintenanceConfigr^   s      r   _maintenance_config+_BareMetalClusterClient._maintenance_config  sG     	'3R)
F 6==?00:6::r   c                 x    Uc  g[         R                  R                  nUR                  UR                  S.nX1   $ )zUConstructs proto message BareMetalWorkloadNodeConfig.ContainerRuntimeValueValuesEnum.N)ContainerRuntimeUnspecified
Conatinerd)r#   BareMetalWorkloadNodeConfigContainerRuntimeValueValuesEnumCONTAINER_RUNTIME_UNSPECIFIED
CONTAINERD)r   container_runtimecontainer_runtime_enumcontainer_runtime_mappings       r   _container_runtime*_BareMetalClusterClient._container_runtime  sH      	,,LL 
 #@@,77	! %77r   c                     [        USS5      nU R                  U5      [        USS5      S.n[        UR                  5       5      (       a  [        R
                  " S0 UD6$ g)z5Constructs proto message BareMetalWorkloadNodeConfig.r  Nmax_pods_per_node)containerRuntimemaxPodsPerNoderZ   )r   r  r[   r\   r#   r  )r   r   r  r_   s       r   _workload_node_config-_BareMetalClusterClient._workload_node_config  s_    &94@ 334EF!$(;TBF
 6==?11;F;;r   c                 h   / n[        USS5      nU(       a%  U Vs/ s H  n[        R                  " US9PM     sn$ UR                  S   S:X  a  g[        R
                  R                  R                  R                  5       nU(       a%  [        R                  " US9nUR                  U5      $ gs  snf )z.Constructs repeated proto message ClusterUser.admin_usersN)usernamerO   rP   )
r   r#   ClusterUserrR   r   VALUEScoreaccountGetrI   )r   r   cluster_user_messagesr  
admin_usergcloud_config_core_accountdefault_admin_user_messages          r   _cluster_users&_BareMetalClusterClient._cluster_users  s    $t4K ('j 



3'  ( ",!2!2!7!7!?!?!C!C!E!#+#7#7-$  #))*DEE#s   B/c                     SU R                  U5      0n[        UR                  5       5      (       a  [        R                  " S0 UD6$ g)z'Constructs proto message Authorization.
adminUsersNrZ   )r  r[   r\   r#   Authorizationr^   s      r   _authorization&_BareMetalClusterClient._authorization  sE     	d))$/F 6==?##-f--r   c                     SU R                  U5      0n[        UR                  5       5      (       a  [        R                  " S0 UD6$ g)z1Constructs proto message BareMetalSecurityConfig.authorizationNrZ   )r  r[   r\   r#   BareMetalSecurityConfigr^   s      r   _security_config(_BareMetalClusterClient._security_config  sE     	,,T2F 6==?--777r   c                     S[        USS5      0n[        UR                  5       5      (       a  [        R                  " S0 UD6$ g)z3Constructs proto message BareMetalNodeAccessConfig.	loginUser
login_userrootNrZ   )r   r[   r\   r#   BareMetalNodeAccessConfigr^   s      r   _node_access_config+_BareMetalClusterClient._node_access_config   sC     	WT<8F 6==?//9&99r   returnc                     S[        USS5      0n[        UR                  5       5      (       a  [        R                  " S0 UD6$ g)z7Constructs proto message BareMetalClusterUpgradePolicy.controlPlaneOnlyupgrade_control_planeNrZ   )r   r[   r\   r#   BareMetalClusterUpgradePolicyr^   s      r   _upgrade_policy'_BareMetalClusterClient._upgrade_policy  sD    
 	GD*A4HF 6==?33=f==r   c                    0 SU R                  U5      _SU R                  U5      _S[        USS5      _SU R                  U5      _S[        USS5      _SU R	                  U5      _S	U R                  U5      _S
U R                  U5      _SU R                  U5      _SU R                  U5      _SU R                  U5      _SU R                  U5      _SU R                  U5      _SU R                  U5      _SU R                  U5      _SU R                  U5      _SU R                  U5      _n[!        UR#                  5       5      (       a  [$        R&                  " S0 UD6$ g)z,Constructs proto message Bare Metal Cluster.nameadminClusterMembershipdescriptionNr   bareMetalVersionversionnetworkConfigcontrolPlaneloadBalancerstorageproxyclusterOperationsmaintenanceConfig
nodeConfigsecurityConfignodeAccessConfigbinaryAuthorizationupgradePolicyrZ   )_user_cluster_name_admin_cluster_membership_namer   rS   r{   r  r  ri  r  r  r  r  r  r  _binary_authorizationr  r[   r\   r#   r$   r^   s      r   _bare_metal_user_cluster0_BareMetalClusterClient._bare_metal_user_cluster  s   ''- $"E"Ed"K 	wt]D9 	t((.	
 	GD)T: 	--d3 	2248 	2248 	4''- 	##D) 	T<<TB 	T55d; 	d006 	$//5 	D44T:  	t99$?!" 	--d3#F( 6==?&&000r   rZ   N)Q__name__
__module____qualname____firstlineno____doc__r   	Namespacer   r    r&   r/   r4   r   rD   r   rS   r`   rg   rd   rr   r{   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r  r   r!  r"  r3  r>  r9  r7  r6  r8  rW  r^  rc  ri  r   rp  rv  ry  r}  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r#   r  r  r  __static_attributes__rZ   r   r   r   r   "   s   9:&7&A&A :5#4#>#> 58	B&7&A&A 	BC#4#>#> C
+<+F+F 
)&7&A&A )$$0:: +<+F+F  !2!<!< (9(C(C #--"3"="=  
/99 
0:: !+<+F+F !*?2+<+F+F "2 *3D3N3N *2' R

3D3N3N 
(9(C(C  #4#>#>  *#--.#-- +<+F+F  	->-H-H 	#4#>#>  	$5$?$? 	(9(C(C !2!<!< %6%@%@ $$5$?$?  
#--

(9(C(C 
#-- #--"	2C2M2M 	 1B1L1L  &1B1L1L 
/99 

$5$?$? 
*;*E*E 
"3"="= 
 &2$/#--/2
#--
->-H-H  ->-H-H  ($5$?$? &#-- 0A0K0K 	2C2M2M 	
#4#>#> 
(9(C(C 
 1 ; ; 
	->-H-H 	&7&A&A 8"(9(C(C !2!<!< 0	!2!<!< 		#4#>#> 		&7&A&A 	#--667+<+F+F r   r   c                   d  ^  \ rS rSrSrU 4S jrS\R                  4S jrS r	S\R                  4S jr
S\R                  4S jrS\R                  4S	 jrS\R                  4S
 jrS\R                  4S jrS\R                  4S jrS\R                  4S jrS\R                  4S jrSrU =r$ )ClustersClienti4  z0Client for clusters in gkeonprem bare metal API.c                 d   > [         [        U ]
  " S0 UD6  U R                  R                  U l        g )NrZ   )superr  __init___client$projects_locations_bareMetalClusters_service)r   r_   	__class__s     r   r  ClustersClient.__init__7  s&    	.$(262LLEEDMr   r   c                    UR                   (       a  UR                   O1[        R                  R                  R                   R	                  5       nSR                  USS9n[        R                  " US9n U R                  R                  U5      nSUR                  5       ;  a>  [        R                  R                  R                  R	                  5       (       d  SUl        [        R                   " U R#                  U5      S9n[$        R&                  " U R                  US[)        USS	5      [)        US
S5      SS9$ ! [        R                  [        R                  4 a     Nf = f)z1Lists Clusters in the GKE On-Prem Bare Metal API.z'projects/{project}/locations/{location}zus-west1)projectlocation)parentr  -bareMetalClusters	page_sized   limitNpageSize)field
batch_sizer  batch_size_attribute)r  r   r  r  r  r   r#   DGkeonpremProjectsLocationsBareMetalClustersQueryVersionConfigRequestr  QueryVersionConfigapitools_exceptionsHttpUnauthorizedErrorHttpForbiddenErrorrB   container_bare_metalr  6GkeonpremProjectsLocationsBareMetalClustersListRequest_location_namer   YieldFromListr   )r   r   r  r  dummy_request_list_reqs          r   ListClustersClient.List;  s=   
 **;*;*@*@*H*H*L*L*N  7==* > F aaM
--
*
*=
9a 	$3355!!66??CCEEdmNN""4(H ##!4c2dGT*' ' 	11..  s   5D> >$E%$E%c                 |    [         R                  " UR                  5       S9nU R                  R	                  U5      $ )z3Gets a GKE On-Prem Bare Metal API cluster resource.)r  )r#   5GkeonpremProjectsLocationsBareMetalClustersGetRequestRelativeNamer  r  )r   resource_refreqs      r   r:   ClustersClient.Describeh  s5    

H
H&&(C ==S!!r   c                 
   U R                  U5      U R                  U5      [        USS5      S.n[        R                  " S0 UD6n[        R
                  " U R                  U5      US9nU R                  R                  U5      $ )z'Enrolls a bare metal cluster to Anthos.
local_nameN)r  bareMetalClusterId	localName)r  enrollBareMetalClusterRequestrZ   )	r   _user_cluster_idr   r#   EnrollBareMetalClusterRequest8GkeonpremProjectsLocationsBareMetalClustersEnrollRequest_user_cluster_parentr  Enroll)r   r   r_   !enroll_bare_metal_cluster_requestr4  s        r   r?  ClustersClient.Enrollp  s     #'"E"Ed"K"33D9T<6F
 )1(N(N )
)% 
K
K((.&GC
 ==$$r   c                     U R                  U5      U R                  U5      U R                  U5      R                  5       S.n[        R
                  " S0 UD6nU R                  R                  U5      $ )z1Query Anthos on bare metal version configuration.)#createConfig_adminClusterMembershipupgradeConfig_clusterNamer  rZ   )r   r  _location_refr2  r#   r"  r  r#  r   r   r_   r4  s       r   r#  !ClustersClient.QueryVersionConfig  so     //5%)%<%<T%B$$T*779F 
W
W 
C ==++C00r   c                     U R                  U5      [        USS5      [        USS5      S.n[        R                  " S0 UD6nU R                  R                  U5      $ )z*Unenrolls an Anthos cluster on bare metal.forceNallow_missing)r  rI  allowMissingrZ   )r  r   r#   :GkeonpremProjectsLocationsBareMetalClustersUnenrollRequestr  UnenrollrF  s       r   rM  ClustersClient.Unenroll  sb     ''-w-ot<F
 
M
M 
C ==!!#&&r   c                     U R                  U5      [        USS5      [        USS5      [        USS5      U R                  US5      S.n[        R                  " S0 UD6nU R
                  R                  U5      $ )z(Deletes an Anthos cluster on bare metal.rJ  Fvalidate_onlyrI  ignore_errors)r  rK  validateOnlyrI  ignoreErrorsrZ   )r  r   rp   r#   8GkeonpremProjectsLocationsBareMetalClustersDeleteRequestr  DeleterF  s       r   rU  ClustersClient.Delete  s|     ''-ou=ou=w.T?;F 
K
K 
C ==$$r   c                     U R                  U5      [        USS5      U R                  U5      U R                  U5      S.n[        R
                  " S0 UD6nU R                  R                  U5      $ )(Creates an Anthos cluster on bare metal.rP  Fr  rR  bareMetalClusterr8  rZ   )r>  r   r  r;  r#   8GkeonpremProjectsLocationsBareMetalClustersCreateRequestr  CreaterF  s       r   r\  ClustersClient.Create  sr     ++D1ou= 99$?"33D9	F 
K
K 
C ==$$r   c                 6   U R                  U5      U R                  US5      [        R                  " U[        R                  5      U R                  US5      U R                  U5      S.n[        R                  " S0 UD6nU R                  R                  U5      $ )z(Updates an Anthos cluster on bare metal.rJ  rP  r  rK  
updateMaskrR  rZ  rZ   )
r  rp   r
   get_update_mask'BARE_METAL_CLUSTER_ARGS_TO_UPDATE_MASKSr  r#   7GkeonpremProjectsLocationsBareMetalClustersPatchRequestr  PatchrF  s       r   UpdateClustersClient.Update  s     ''-T?;!11+EE
 T?; 99$?F 
J
J 
C ==s##r   c                     UR                  5       R                  5       U R                  US5      UUR                  5       S.n[        R
                  " S0 UD6nU R                  R                  U5      $ )rX  rP  rY  rZ   )Parentr2  rp   Namer#   r[  r  r\  )r   r   bare_metal_clusterbare_metal_cluster_refr_   r4  s         r   CreateFromImportClustersClient.CreateFromImport  sn     )//1>>@T?;.499;	F 
K
K 
C ==$$r   c                     / SQnU R                  U5      U R                  US5      SR                  U5      U R                  US5      US.n[        R                  " S0 UD6nU R
                  R                  U5      $ )N)r  bare_metal_versionr   network_configcontrol_planeload_balancerr  r  cluster_operationsmaintenance_configr   security_confignode_access_configos_environment_configrJ  ,rP  r_  rZ   )r  rp   joinr#   rc  r  rd  )r   r   rj  top_level_mutable_fieldsr_   r4  s         r   UpdateFromFileClustersClient.UpdateFromFile  s~    
 " ''-T?;hh78T?;.F 
J
J 
C ==s##r   )r  )r  r  r  r  r  r  r   r	  r.  r:   r?  r#  rM  rU  r\  re  rl  r{  r
  __classcell__)r  s   @r   r  r  4  s    8F+(22 +Z"%*44 %"1%6%@%@ 1',66 '%*44 %%*44 %$*44 $"%''%$$#--$ $r   r  N)r  
__future__r   r   r   typingr   apitools.base.pyr   r$  r   *googlecloudsdk.api_lib.container.gkeonpremr	   r
   googlecloudsdk.callioper   r   googlecloudsdk.corer   2googlecloudsdk.generated_clients.apis.gkeonprem.v1r   r#   
ClientBaser   r  rZ   r   r   <module>r     sV    L &  '  > ' = B / . 5 * `Of// Od H$, H$r   