
    s                        d Z ddlmZ ddlmZ ddlmZ ddlmZ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j4                        Z G d de	j8                        Zy)zAUtilities for gkeonprem API clients for VMware cluster resources.    )absolute_import)division)unicode_literals)	GeneratorOptional)
exceptions)
list_pager)client)update_mask)version_util)parser_extensions)flags)
properties)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                  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                  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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"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                  de(ejR                     fd"Z*dej                  fd#Z+dej                  fd$Z,d% Z-dej                  fd&Z.dej^                  fd'Z0d( Z1dej                  fd)Z2dej                  fd*Z3dej                  fd+Z4dej                  fd,Z5dej                  fd-Z6dej                  fd.Z7dej                  fd/Z8dej                  fd0Z9dej                  fd1Z:dej                  fd2Z;dej                  fd3Z<dej                  dejz                  fd4Z>dej                  dejz                  fd5Z?dej                  fd6Z@dej                  fd7ZAd8 ZBdej                  fd9ZD xZES ):ClustersClientz.Client for clusters in GKE On-Prem VMware API.c                 b    t        t        | 
  di | | j                  j                  | _        y )N )superr   __init___client!projects_locations_vmwareClusters_service)selfkwargs	__class__s     Alib/googlecloudsdk/api_lib/container/gkeonprem/vmware_clusters.pyr   zClustersClient.__init__&   s&    	.$(262LLBBDM    argsreturnNc           
         |j                   r|j                   n1t        j                  j                  j                   j	                         }dj                  |d      }t        j                  |      }	 | j                  j                  |      }d|j                         vr9t        j                  j                  j                  j	                         sd|_        t        j                   | j#                  |            }t%        j&                  | j                  |dt)        j                  |d      t)        j                  |d	      d
      S # t        j                  t        j                  f$ r Y w xY w)z-Lists Clusters in the GKE On-Prem VMware API.z'projects/{project}/locations/{location}zus-west1)projectlocation)parentr#   -vmwareClusters	page_sizelimitpageSize)field
batch_sizer(   batch_size_attribute)r"   r   VALUEScoreGetformatmessagesAGkeonpremProjectsLocationsVmwareClustersQueryVersionConfigRequestr   QueryVersionConfigapitools_exceptionsHttpUnauthorizedErrorHttpForbiddenErrorGetSpecifiedArgsDictcontainer_vmwarer#   3GkeonpremProjectsLocationsVmwareClustersListRequest_location_namer	   YieldFromListr   )r   r   r"   r$   dummy_request_list_reqs          r   ListzClustersClient.List*   s>    **;*;*@*@*H*H*L*L*N  7==* > F ^^M
--
*
*=
9a 	$3355!!22;;??AdmKK""4(H ##99T;/iig&' ' 	11..  s   5E #E32E3c                 H   | j                  |      | j                  |      t        j                  |d      t        j                  |d      d}t	        j
                  di |}t	        j                  | j                  |      |      }| j                  j                  |      S )z#Enrolls a VMware cluster to Anthos.
local_namevalidate_only)adminClusterMembershipvmwareClusterId	localNamevalidateOnly)r$   enrollVmwareClusterRequestr   )
_admin_cluster_membership_name_user_cluster_idr   r/   r1   EnrollVmwareClusterRequest5GkeonpremProjectsLocationsVmwareClustersEnrollRequest_user_cluster_parentr   Enroll)r   r   r   enroll_vmware_cluster_requestreqs        r   rM   zClustersClient.EnrollX   s     #'"E"Ed"K006YYt\2		$8	F %-$G$G %
%! 
H
H((.#@C ==$$r   c                    | j                  |      t        j                  |d      t        j                  |d      t        j                  |d      d}t        j                  di |}| j
                  j                  |      S )z&Unenrolls an Anthos cluster on VMware.forceallow_missingrB   )namerQ   allowMissingrF   r   )_user_cluster_namer   r/   r1   7GkeonpremProjectsLocationsVmwareClustersUnenrollRequestr   Unenrollr   r   r   rO   s       r   rW   zClustersClient.Unenrolli   st     ''-4)		$8		$8	F 
J
J 
C ==!!#&&r   c                 0   | j                  |      t        j                  |d      t        j                  |d      t        j                  |d      t        j                  |d      d}t        j                  di |}| j
                  j                  |      S )z$Deletes an Anthos cluster on VMware.rR   rB   rQ   ignore_errors)rS   rT   rF   rQ   ignoreErrorsr   )rU   r   r/   r1   5GkeonpremProjectsLocationsVmwareClustersDeleteRequestr   DeleterX   s       r   r]   zClustersClient.Deletev   s     ''-		$8		$84)		$8F 
H
H 
C ==$$r   c                     | j                  |      t        j                  |d      | j                  |      | j	                  |      d}t        j                  di |}| j                  j                  |      S z$Creates an Anthos cluster on VMware.rB   )r$   rF   vmwareClusterrD   r   )	rL   r   r/   _vmware_clusterrI   r1   5GkeonpremProjectsLocationsVmwareClustersCreateRequestr   CreaterX   s       r   rc   zClustersClient.Create   st     ++D1		$8--d3006	F 
H
H 
C ==$$r   c                     |j                         j                         t        j                  |d      ||j	                         d}t        j                  di |}| j                  j                  |      S r_   )	ParentRelativeNamer   r/   Namer1   rb   r   rc   )r   r   vmware_clustervmware_cluster_refr   rO   s         r   CreateFromImportzClustersClient.CreateFromImport   sn     %++-::<		$8'-224	F 
H
H 
C ==$$r   c                 B   | j                  |      t        j                  |d      t        j                  |t        j
                        t        j                  |d      | j                  |      d}t        j                  di |}| j                  j                  |      S )NrR   rB   rS   rT   
updateMaskrF   r`   r   )rU   r   r/   r   get_update_mask#VMWARE_CLUSTER_ARGS_TO_UPDATE_MASKSra   r1   4GkeonpremProjectsLocationsVmwareClustersPatchRequestr   PatchrX   s       r   UpdatezClustersClient.Update   s    ''-		$8!11+AA
 		$8--d3F 
G
G 
C ==s##r   c                    g d}| j                  |      t        j                  |d      dj                  |      t        j                  |d      |d}t	        j
                  di |}| j                  j                  |      S )N)descriptionon_prem_versionannotationscontrol_plane_nodeanti_affinity_groupsstoragenetwork_configload_balancerdataplane_v2auto_repair_configauthorizationrR   ,rB   rl   r   )rU   r   r/   joinr1   rp   r   rq   )r   r   rh   top_level_mutable_fieldsr   rO   s         r   UpdateFromFilezClustersClient.UpdateFromFile   s~    
  ''-		$8hh78		$8'F 
G
G 
C ==s##r   c                     | j                  |      | j                  |      | j                  |      j                         d}t	        j
                  di |}| j                  j                  |      S )N)#createConfig_adminClusterMembershipupgradeConfig_clusterNamer$   r   )rH   rU   _location_refrf   r1   r2   r   r3   rX   s       r   r3   z!ClustersClient.QueryVersionConfig   so    
 //5%)%<%<T%B$$T*779F 
T
T 
C ==++C00r   c                    i d| j                  |      d| j                  |      dt        j                  |d      dt        j                  |d      d| j	                  |      d| j                  |      d| j                  |      d	| j                  |      d
| j                  |      d| j                  |      d| j                  |      d| j                  |      d| j                  |      d| j                  |      d| j                  |      d| j                  |      d| j!                  |      }t#        |j%                               rt'        j(                  di |S y)z'Constructs proto message VmwareCluster.rS   rC   rt   onPremVersionversionrv   controlPlaneNodeantiAffinityGroupsry   networkConfigloadBalancervcenterdataplaneV2vmTrackingEnabledautoRepairConfigr~   enableControlPlaneV2upgradePolicyNr   )rU   rH   r   r/   _annotations!_vmware_control_plane_node_config_vmware_aag_config_vmware_storage_config_vmware_network_config_vmware_load_balancer_config_vmware_vcenter_config_vmware_dataplane_v2_config_vm_tracking_enabled_vmware_auto_repair_config_authorization_enable_control_plane_v2_upgrade_policyanyvaluesr1   VmwareClusterr   r   r   s      r   ra   zClustersClient._vmware_cluster   s   ''- $"E"Ed"K 	uyy}5 	43	
 	t((. 	DBB4H 	d55d; 	4..t4 	44T: 	99$? 	4..t4 	t77= 	T66t< 	D;;DA 	,,T2  	 = =d C!" 	--d3#F& 6==?##-f--r   c           
         t        j                  |d      t        j                  |d      t        j                  |d      t        j                  |d      t        j                  |d      t        j                  |d      t        j                  |d      d}t        j                  |      rt        j                  d
i |S y	)z-Constructs proto message VmwareVCenterConfig.vcenter_ca_cert_datavcenter_clustervcenter_datacentervcenter_datastorevcenter_foldervcenter_resource_poolvcenter_storage_policy_name)
caCertDatacluster
datacenter	datastorefolderresourcePoolstoragePolicyNameNr   )r   r/   IsSetr1   VmwareVCenterConfigr   s      r   r   z%ClustersClient._vmware_vcenter_config   s     ii&<=99T#45ii&:;YYt%89))D"23		$(?@"YYt-JKF {{6))3F33r   c                     d|j                         vry|j                  }t        j                  |j	                  dd            S )z4Constructs proto message VmwareClusterUpgradePolicy.z--upgrade-policyNzcontrol-plane-only)controlPlaneOnly)GetSpecifiedArgNamesupgrade_policyr1   VmwareClusterUpgradePolicyget)r   r   r   s      r   r   zClustersClient._upgrade_policy  sE    !:!:!<<((N..'++,@$G r   c                     d|j                         v ryd|j                         v ryd}|j                  d   dk(  r/t        j                  |j                        j                  |      ryy)	zXWhile creating a 1.15+ user cluster, default enable_control_plane_v2 to True if not set.enable_control_plane_v2Tdisable_control_plane_v2Fz1.15.0-gke.0createN)r7   command_pathr   Versionr   feature_available)r   r   default_enable_control_plane_v2s      r   r   z'ClustersClient._enable_control_plane_v2  sp     D$=$=$??!T%>%>%@@&4#(\-A-A.78.9 r   c                 2    t        j                  |d      ryy )Nenable_vm_trackingTr   r/   r   r   s     r   r   z#ClustersClient._vm_tracking_enabled"  s    yy+,r   c                 `    t        j                  |d      ryt        j                  |d      ryy )Nenable_auto_repairTdisable_auto_repairFr   r   s     r   auto_repair_enabledz"ClustersClient.auto_repair_enabled'  s)    yy+,yy,-r   c                 ~    d| j                  |      i}t        j                  |      rt        j                  di |S y)z0Constructs proto message VmwareAutoRepairConfig.enabledNr   )r   r   r   r1   VmwareAutoRepairConfigr   s      r   r   z)ClustersClient._vmware_auto_repair_config.  s@     	4++D1F {{6,,6v66r   c                 x   g }t        j                  |d      }|r0|D ])  }t        j                  |      }|j	                  |       + |S |j
                  d   dk(  ryt        j                  j                  j                  j                         }|r)t        j                  |      }|j	                  |       |S y)z.Constructs repeated proto message ClusterUser.admin_users)usernamer   updateN)
r   r/   r1   ClusterUserappendr   r   r-   r.   account)r   r   cluster_user_messagesr   
admin_usercluster_user_messagegcloud_config_core_accountdefault_admin_user_messages           r   _cluster_userszClustersClient._cluster_users7  s    ))D-0K#*'33ZH$$%9: $ #" ( ",!2!2!7!7!?!?!C!C!E!#+#7#7-$  ""#=>""r   c                 ~    d| j                  |      i}t        j                  |      rt        j                  di |S y)z'Constructs proto message Authorization.
adminUsersNr   )r   r   r   r1   Authorizationr   s      r   r   zClustersClient._authorizationP  s@     	d))$/F {{6##-f--r   c                 `    t        j                  |d      ryt        j                  |d      ryy)z,Constructs proto field dataplane_v2_enabled.enable_dataplane_v2Tdisable_dataplane_v2FNr   r   s     r   _dataplane_v2_enabledz$ClustersClient._dataplane_v2_enabledY  s)    yy,-yy-.r   c                 `    t        j                  |d      ryt        j                  |d      ryy)z+Constructs proto field advanced_networking.enable_advanced_networkingTdisable_advanced_networkingFNr   r   s     r   _advanced_networkingz#ClustersClient._advanced_networkinga  s)    yy34yy45r   c                     t        j                  |d      t        j                  |d      d}t        j                  |      rt        j                  di |S y)z1Constructs proto message VmwareDataplaneV2Config.r   r   )dataplaneV2EnabledadvancedNetworkingNr   )r   r/   r   r1   VmwareDataplaneV2Configr   s      r   r   z*ClustersClient._vmware_dataplane_v2_configi  sN     $ii.CD#ii.JKF {{6--777r   c                 `    t        j                  |d      ryt        j                  |d      ryy)z,Constructs proto field vsphere_csi_disabled.disable_vsphere_csiTenable_vsphere_csiFNr   r   s     r   _vsphere_csi_disabledz$ClustersClient._vsphere_csi_disableds  s)    yy,-yy+,r   c                 ~    d| j                  |      i}t        j                  |      rt        j                  di |S y)z-Constructs proto message VmwareStorageConfig.vsphereCsiDisabledNr   )r   r   r   r1   VmwareStorageConfigr   s      r   r   z%ClustersClient._vmware_storage_config{  s@     	d88>F {{6))3F33r   c                 `    t        j                  |d      ryt        j                  |d      ryy)z+Constructs proto field aag_config_disabled.disable_aag_configTenable_aag_configFNr   r   s     r   _aag_config_disabledz#ClustersClient._aag_config_disabled  s)    yy+,yy*+r   c                 ~    d| j                  |      i}t        j                  |      rt        j                  di |S y)z)Constructs proto message VmwareAAGConfig.aagConfigDisabledNr   )r   r   r   r1   VmwareAAGConfigr   s      r   r   z!ClustersClient._vmware_aag_config  s@     	T66t<F {{6%%///r   c                 `    t        j                  |d      ryt        j                  |d      ryy)z2Constructs proto field auto_resize_config.enabled.enable_auto_resizeTdisable_auto_resizeFNr   r   s     r   _auto_resize_enabledz#ClustersClient._auto_resize_enabled  s)    yy+,yy,-r   c                 ~    d| j                  |      i}t        j                  |      rt        j                  di |S y)z0Constructs proto message VmwareAutoResizeConfig.r   Nr   )r   r   r   r1   VmwareAutoResizeConfigr   s      r   _vmware_auto_resize_configz)ClustersClient._vmware_auto_resize_config  s@     	4,,T2F {{6,,6v66r   c                    | j                  |      t        j                  |d      t        j                  |d      t        j                  |d      | j                  |      d}t        j                  |      rt        j                  di |S y)z6Constructs proto message VmwareControlPlaneNodeConfig.cpusmemoryreplicas)autoResizeConfigr  r  r  vsphereConfigNr   )r   r   r/   $_vmware_control_plane_vsphere_configr   r1   VmwareControlPlaneNodeConfigr   s      r   r   z0ClustersClient._vmware_control_plane_node_config  sv    
 !;;DA		$'))D(+IIdJ/BB4HF {{622<V<<r   c                     d|j                         vry|j                  j                  dd      |j                  j                  dd      d}t        j                  di |S )z9Constructs proto message VmwareControlPlaneVsphereConfig.control_plane_vsphere_configNr   zstorage-policy-name)r   r   r   )r7   r
  r   r1   VmwareControlPlaneVsphereConfigr   s      r   r  z3ClustersClient._vmware_control_plane_vsphere_config  sf     &T-F-F-HH 66::;M!>>BB!4
F 33=f==r   c                 P    t        j                  |d      }| j                  |      S )z=Constructs proto message AnnotationsValue for create command.rv   )r   r/   _dict_to_annotations_message)r   r   rv   s      r   _create_annotationsz"ClustersClient._create_annotations  s#    ))D-0K,,[99r   c                 (   g d}t        fd|D              ryj                  j                  j                         }| j	                  |      }i }|j
                  r4|j
                  j                  D ]  }|j                  ||j                  <    dj                         v r8j                  j                         D ]
  \  }}|||<    | j                  |      S dj                         v rt        j                  j                         S dj                         v rB|j                         D ci c]  \  }}|j                   vr|| }	}}| j                  |	      S dj                         v r| j                  j"                        S yc c}}w )z=Constructs proto message AnnotationsValue for update command.)add_annotationsclear_annotationsremove_annotationsset_annotationsc              3   B   K   | ]  }|j                         v  y w)N)r7   ).0flagr   s     r   	<genexpr>z5ClustersClient._update_annotations.<locals>.<genexpr>  s$      <LDD--//<Ls   Nr  r  r  r  )allCONCEPTSr   ParseDescriberv   additionalPropertiesvaluekeyr7   r  itemsr  r1   r   AnnotationsValuer  r  )
r   r   annotation_flagscluster_refcluster_responsecurr_annotations
annotationr  r  updated_annotationss
    `        r   _update_annotationsz"ClustersClient._update_annotations  s     <L  --''--/K}}[1##(44II*+5+;+;( J D5577,,224*#u % 5../?@@	 9 9 ;	;##4466	!:!:!<	< -2244jc5/// u*4  
 ../BCC	d779	9..t/C/CDDs   1Fc                     g }|sy |j                         D ]?  \  }}|j                  t        j                  j                  j                  ||             A t        j                  j	                  |      }|S )N)r  r  )r  )r  r   r1   r   r   AdditionalProperty)r   rv   additional_property_messagesr  r  annotation_value_messages         r   r  z+ClustersClient._dict_to_annotations_message  s    #% !'')
U"))

 
 
1
1
D
DU E  *  (55FF9  G   $#r   c                     |j                   d   dk(  r| j                  |      S |j                   d   dk(  r| j                  |      S y)z*Constructs proto message AnnotationsValue.r   r   r   N)r   r  r'  r   s     r   r   zClustersClient._annotations  sM    (%%d++			2	(	*%%d++r   c                     |j                  dd      }|st        d      |j                  dd      }|st        d      ||d}t        j                  di |S )z&Constructs proto message VmwareHostIp.hostnameNz9Missing field [hostname] in Static IP configuration file.ipz3Missing field [ip] in Static IP configuration file.)r.  r/  r   )r   InvalidConfigFiler1   VmwareHostIp)r   host_ipr.  r/  r   s        r   _vmware_host_ipzClustersClient._vmware_host_ip	  sj    {{:t,H
E  
T4	 B
?  #"-F  *6**r   c                 b   |j                  dd      }|st        d      |j                  dd      }|st        d      |j                  dg       }|st        d      |||D cg c]  }| j                  |       c}d}t        j                  |      rt        j                  d	i |S yc c}w )
z'Constructs proto message VmwareIpBlock.gatewayNz8Missing field [gateway] in Static IP configuration file.netmaskz8Missing field [netmask] in Static IP configuration file.ipsz4Missing field [ips] in Static IP configuration file.r5  r6  r7  r   )r   r0  r3  r   r   r1   VmwareIpBlock)r   ip_blockr5  r6  host_ipsr2  r   s          r   _vmware_ip_blockzClustersClient._vmware_ip_block  s    ll9d+G
D  ll9d+G
D  ||E2&H
@ 
 =EFX'$$W-XFF
 {{6##-f--	 Gs   $B,c                 8   |j                   }|j                  dd       }|st        d      |j                  dg       }|st        d      d|D cg c]  }| j                  |       c}i}t	        j
                  |      rt        j                  di |S y c c}w )NstaticIPConfigz?Missing field [staticIPConfig] in Static IP configuration file.ipBlocksz9Missing field [ipBlocks] in Static IP configuration file.r   )static_ip_config_from_filer   r0  r<  r   r   r1   VmwareStaticIpConfig)r   r   file_contentstatic_ip_config	ip_blocksr:  r   s          r   "_vmware_static_ip_config_from_filez1ClustersClient._vmware_static_ip_config_from_file7  s     22L#''(8$?
K  !$$Z4I
E 
 	YOYT**84YOF {{6**4V44	 Ps   Bc                 $   t        j                         }|j                  D ]g  }t        j                  |d   |d   |d   D cg c]  }t        j                  |d   |d         ! c}      }|j
                  j                  |       i |S c c}w )Nr5  r6  r7  r      r/  r.  r8  )r1   rA  static_ip_config_ip_blocksr9  r1  r?  r   )r   r   vmware_static_ip_config_messager:  r/  vmware_ip_block_messages         r   "_vmware_static_ip_config_ip_blocksz1ClustersClient._vmware_static_ip_config_ip_blocksN  s     '/&C&C&E#33 ( 6 69%9% !'" ##r!ur!u='! &..556MN 4 +*s   $Bc                     d|j                         v r| j                  |      S d|j                         v r| j                  |      S y)z.Constructs proto message VmwareStaticIpConfig.r@  rI  N)r7   rE  rL  r   s     r   _vmware_static_ip_configz'ClustersClient._vmware_static_ip_config^  sI    #t'@'@'BB44T::#t'@'@'BB44T::r   c                     dt        j                  |d      i}t        j                  |      rt        j                  di |S y)z,Constructs proto message VmwareDhcpIpConfig.r   enable_dhcpNr   )r   r/   r   r1   VmwareDhcpIpConfigr   s      r   _vmware_dhcp_ip_configz%ClustersClient._vmware_dhcp_ip_configh  s@     	599T=1F {{6((2622r   c                     t        j                  |dg       t        j                  |dg       t        j                  |dg       d}t        j                  |      rt        j                  di |S y)z*Constructs proto message VmwareHostConfig.dns_serversntp_serversdns_search_domains)
dnsServers
ntpServersdnsSearchDomainsNr   )r   r/   r   r1   VmwareHostConfigr   s      r   _vmware_host_configz"ClustersClient._vmware_host_configq  sa     iimR8iimR8!IId,@"EF
 {{6&&000r   c           
      V   d|j                         vry|j                  j                  dd      |j                  j                  dd      |j                  j                  dg       D cg c]  }t        j                  |d   |d         ! c}d	}t        j
                  d
i |S c c}w )z-Constructs proto message ControlPlaneIpBlock.control_plane_ip_blockNr5  r6  r7  r   rG  rH  r8  r   )r7   r]  r   r1   r1  r9  )r   r   r/  r   s       r   _control_plane_ip_blockz&ClustersClient._control_plane_ip_block|  s    t'@'@'BB ..229dC..229dC 1155eR@
@ !!RURU;@
F !!+F++
s   ($B&c                     d| j                  |      i}t        |j                               rt        j                  di |S y)z4Constructs proto message VmwareControlPlaneV2Config.controlPlaneIpBlockNr   )r^  r   r   r1   VmwareControlPlaneV2Configr   s      r   _vmware_control_plane_v2_configz.ClustersClient._vmware_control_plane_v2_config  sB     	t;;DAF 6==?00:6::r   c                 >   t        j                  |dg       t        j                  |dg       | j                  |      | j                  |      | j	                  |      | j                  |      d}t        |j                               rt        j                  di |S y)z-Constructs proto message VmwareNetworkConfig.service_address_cidr_blockspod_address_cidr_blocks)serviceAddressCidrBlockspodAddressCidrBlocksstaticIpConfigdhcpIpConfig
hostConfigcontrolPlaneV2ConfigNr   )
r   r/   rN  rR  r[  rb  r   r   r1   VmwareNetworkConfigr   s      r   r   z%ClustersClient._vmware_network_config  s     %*II/%
 !&		$0I2 N77=33D9..t4 $ D DT J	F 6==?))3F33r   c                     | j                  |      | j                  |      | j                  |      | j                  |      d}t	        |j                               rt        j                  di |S y)z2Constructs proto message VmwareLoadBalancerConfig.)f5ConfigmetalLbConfigmanualLbConfig	vipConfigNr   )_vmware_f5_big_ip_config_vmware_metal_lb_config_vmware_manual_lb_config_vmware_vip_configr   r   r1   VmwareLoadBalancerConfigr   s      r   r   z+ClustersClient._vmware_load_balancer_config  sj     11$755d;77=,,T2	F 6==?..888r   c                     t        j                  |d      t        j                  |d      d}t        |j                               rt	        j
                  di |S y)z)Constructs proto message VmwareVipConfig.control_plane_vipingress_vip)controlPlaneVip
ingressVipNr   )r   r/   r   r   r1   VmwareVipConfigr   s      r   ru  z!ClustersClient._vmware_vip_config  sO     !99T+>?iim4F 6==?%%///r   c                     t        j                  |d      t        j                  |d      t        j                  |d      d}t        |j                               rt	        j
                  di |S y)z-Constructs proto message VmwareF5BigIpConfig.f5_config_addressf5_config_partitionf5_config_snat_pool)address	partitionsnatPoolNr   )r   r/   r   r   r1   VmwareF5BigIpConfigr   s      r   rr  z'ClustersClient._vmware_f5_big_ip_config  s_     99T#67YYt%:;IId$9:F
 6==?))3F33r   c                     |j                   }|j                  dd       }|st        d      |j                  dg       }|st        d      d| j                  |      i}t	        j
                  di |S )NmetalLBConfigz=Missing field [metalLBConfig] in Metal LB configuration file.addressPoolsz<Missing field [addressPools] in Metal LB configuration file.r   )metal_lb_config_from_filer   r0  _address_poolsr1   VmwareMetalLbConfig)r   r   rB  metal_lb_configaddress_poolsr   s         r   !_vmware_metal_lb_config_from_filez0ClustersClient._vmware_metal_lb_config_from_file  s     11L"&&=O
I  $'';M
H 
 	++M:F ''1&11r   c           
      8   t        j                         }|j                  D ]v  }t        j                  |j	                  dg       |j	                  dd       |j	                  dd       |j	                  dd             }|j
                  j                  |       x |S )N	addresseszavoid-buggy-ipszmanual-assignpoolr  avoidBuggyIpsmanualAssignr  )r1   r  metal_lb_config_address_poolsVmwareAddressPoolr   r  r   )r   r   vmware_metal_lb_configaddress_pooladdress_pool_messages        r   !_vmware_metal_lb_config_from_flagz0ClustersClient._vmware_metal_lb_config_from_flag  s     &99;::%77 $$["5$(():DA#''>-	 ))001EF ; "!r   c                     d|j                         v r| j                  |      S d|j                         v r| j                  |      S y)z-Constructs proto message VmwareMetalLbConfig.r  r  N)r7   r  r  r   s     r   rs  z&ClustersClient._vmware_metal_lb_config  sI    "d&?&?&AA33D99	(D,E,E,G	G33D99r   c                    t        j                  |d      t        j                  |d      t        j                  |d      t        j                  |d      d}t        j                  |      rt        j                  di |S y)z.Constructs proto message VmwareManualLbConfig.control_plane_node_portingress_http_node_portingress_https_node_portkonnectivity_server_node_port)controlPlaneNodePortingressHttpNodePortingressHttpsNodePortkonnectivityServerNodePortNr   )r   r/   r   r1   VmwareManualLbConfigr   s      r   rt  z'ClustersClient._vmware_manual_lb_config  so     !&		$0I J$yy/GH %		$0I J&+ii1'
	F {{6**4V44r   c                 J    |D cg c]  }| j                  |       c}S c c}w )z-Constructs proto message field address_pools.)_vmware_address_pool)r   r  r  s      r   r  zClustersClient._address_pools  s4     *)L 	!!,/)  s    c                     |j                  dg       }|st        d      |j                  dd      }|j                  dd      }|j                  dd      }|st        d      ||||d}t        j                  d	i |S )
z+Constructs proto message VmwareAddressPool.r  z9Missing field [addresses] in Metal LB configuration file.avoidBuggyIPsNr  r  z4Missing field [pool] in Metal LB configuration file.r  r   )r   r0  r1   r  )r   r  r  avoid_buggy_ipsmanual_assignr  r   s          r   r  z#ClustersClient._vmware_address_pool  s      b1I
E  #&&=O $$^T:MFD)D
@ 
 (%	F %%///r   )F__name__
__module____qualname____doc__r   r   	Namespacer   r1   r   r?   	OperationrM   rW   r]   rc   rj   rr   r    QueryVmwareVersionConfigResponser3   ra   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r'  r  r   r1  r3  r<  rE  rL  rN  rR  r[  r^  rb  r   r   ru  rr  r  r  r  rs  rt  r  r  r  __classcell__)r   s   @r   r   r   #   st   6C,#--,''t34,\%*44 %9K9K %"',66 '8;M;M '%*44 %9K9K %%*44 %9K9K %%''%
 %$$*44 $9K9K $$#--$$<1#--1001 "3"="= 2):)D)D "3"="= +<+F+F  '8'B'B 
&7&A&A ->-H-H !2!<!< 2!2!<!< (9(C(C '8'B'B .?.I.I (9(C(C ):)D)D '8'B'B %6%@%@ '8'B'B ->-H-H #-->#-->889>:&7&A&A :
%&7&A&A %N$"0:: +(=(= +":#--.+#--+ +<+F+F ):)D)D 	&7&A&A 	,*;*E*E ,2C2M2M ):)D)D  
/@/J/J 
%6%@%@ 	+<+F+F 	2#--2##2*"#--"##"*;*E*E +<+F+F 0(2L2L 0r   r   c                       e Zd ZdZy)r0  zInvalid Argument.N)r  r  r  r  r   r   r   r0  r0     s    r   r0  N)r  
__future__r   r   r   typingr   r   apitools.base.pyr   r4   r	   *googlecloudsdk.api_lib.container.gkeonpremr
   r   'googlecloudsdk.api_lib.container.vmwarer   googlecloudsdk.callioper   +googlecloudsdk.command_lib.container.vmwarer   googlecloudsdk.corer   2googlecloudsdk.generated_clients.apis.gkeonprem.v1r   r1   
ClientBaser   Errorr0  r   r   r   <module>r     s\    H &  ' & > ' = B @ 5 = * * `z0V&& z0z
(( r   