
    `                     l   S r SSK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KJr  SSKrSrSrSrSrSr Sr!Sr"Sr#Sr$Sr%S r&S r'S r( " S S\RR                  " \RT                  \+5      5      r, " S  S!\,5      r-S" r.S# r/ " S$ S%\,5      r0 " S& S'\,5      r1 " S( S)\,5      r2S*r3 " S+ S,\,5      r4 " S- S.\,5      r5S/r6 " S0 S1\,5      r7 " S2 S3\,5      r8S4r9 " S5 S6\,5      r: " S7 S8\,5      r;S9 r< " S: S;\+5      r= " S< S=\,5      r>g)>zUtil for iap.    N)encoding)
list_pager)appengine_api_client)operations_util)projects_api)base_classes)apis)base)
exceptions)iam_util)util)log)	resources)yamliapzappengine.appszcompute.backendServiceszcompute.regionBackendServicesziap.projectsziap.projects.iap_webziap.projects.iap_web.servicesz&iap.projects.iap_web.services.versionsz,iap.projects.iap_tunnel.locations.destGroupsz!iap.projects.iap_tunnel.locationsc                     A g)Nv1 )release_tracks    &lib/googlecloudsdk/api_lib/iap/util.py_ApiVersionr   3   s    	    c                 n    [         R                  R                  5       nUR                  [        U 5        U$ N)r   REGISTRYCloneRegisterApiByNameIAP_API)api_versionregistrys     r   _GetRegistryr!   8   s-     %%'(
Wk2	/r   c                 V    [         R                  " [        R                  " U 5      5      $ r   )r   Getprojects_utilParseProject)
project_ids    r   _GetProjectr'   @   s    			-44Z@	AAr   c                       \ rS rSrSrS r\S 5       r\S 5       r\	R                  S 5       r\	R                  S 5       rS rS	 rS
 rS rS rS rSrg)IapIamResourceD   z!Base class for IAP IAM resources.c                     Xl         [        U5      U l        [        R                  " [
        U R                  5      U l        [        U R                  5      U l        X l	        g)zBase Constructor for an IAP IAM resource.

Args:
  release_track: base.ReleaseTrack, release track of command.
  project: Project of the IAP IAM resource
N)
r   r   r   r	   GetClientInstancer   clientr!   r    project)selfr   r.   s      r   __init__IapIamResource.__init__G   sH     '"=1D(($2B2BCDK !1!12DMLr   c                 .    U R                   R                  $ r   r-   MESSAGES_MODULEr/   s    r   messagesIapIamResource.messagesU       ;;&&&r   c                 B    [        U R                  U R                  5      $ r   getattrr-   r   r5   s    r   serviceIapIamResource.serviceY       4;; 0 011r   c                     g)z$Human-readable name of the resource.Nr   r5   s    r   _NameIapIamResource._Name]        	r   c                     g)z/Parses the IAP IAM resource from the arguments.Nr   r5   s    r   _ParseIapIamResource._Parseb   rB   r   c           	          U R                   R                  UR                  5       U R                   R                  U R                   R	                  [
        R                  S9S9S9nU R                  R                  U5      $ )N)requestedPolicyVersion)options)resourcegetIamPolicyRequest)	r6   IapGetIamPolicyRequestRelativeNameGetIamPolicyRequestGetPolicyOptionsr   !MAX_LIBRARY_IAM_SUPPORTED_VERSIONr<   GetIamPolicy)r/   resource_refrequests      r   _GetIamPolicyIapIamResource._GetIamPolicyg   su    mm22**, MM==MM22:: 3 < > = 3 >G <<$$W--r   c                 D    U R                  5       nU R                  U5      $ )z'Get IAM policy for an IAP IAM resource.)rD   rS   )r/   rQ   s     r   rP   IapIamResource.GetIamPolicyp   s    ;;=Ll++r   c                 J   [         R                  Ul        U R                  R	                  UR                  5       U R                  R                  US9S9nU R                  R                  U5      n[         R                  " UR                  5       U R                  5       5        U$ )N)policy)rI   setIamPolicyRequest)r   rO   versionr6   IapSetIamPolicyRequestrL   SetIamPolicyRequestr<   SetIamPolicyLogSetIamPolicyr@   )r/   rQ   rX   rR   responses        r   _SetIamPolicyIapIamResource._SetIamPolicyu   s    ??FNmm22**, MM==V=L 3 G ||((1H\668$**,GOr   c                     [         R                  " XR                  R                  5      nU R	                  5       nU R                  X25      $ )z+Set the IAM policy for an IAP IAM resource.)r   ParsePolicyFiler6   PolicyrD   r`   )r/   policy_filerX   rQ   s       r   r]   IapIamResource.SetIamPolicy   s8    %%k==3G3GHF;;=Ll33r   c                     U R                  5       nU R                  U5      n[        R                  " U R                  R
                  U R                  R                  XQX#5        U R                  XE5        g)z.Add IAM policy binding to an IAP IAM resource.N)rD   rS   r   "AddBindingToIamPolicyWithConditionr6   BindingExprr`   )r/   memberrole	conditionrQ   rX   s         r   AddIamPolicyBinding"IapIamResource.AddIamPolicyBinding   sY    ;;=L-F//t}}116 	|,r   c                     U R                  5       nU R                  U5      n[        R                  " XaX#US9  U R	                  XV5        g)z3Remove IAM policy binding from an IAP IAM resource.)all_conditionsN)rD   rS   r   'RemoveBindingFromIamPolicyWithConditionr`   )r/   rk   rl   rm   rq   rQ   rX   s          r   RemoveIamPolicyBinding%IapIamResource.RemoveIamPolicyBinding   sA    ;;=L-F44H|,r   )r   r-   r.   r    r   N)__name__
__module____qualname____firstlineno____doc__r0   propertyr6   r<   abcabstractmethodr@   rD   rS   rP   r`   r]   rn   rs   __static_attributes__r   r   r   r)   r)   D   s    ) ' ' 2 2 	 	 	 	.,
4--r   r)   c                   $    \ rS rSrSrS rS rSrg)IAPWeb   zIAP IAM project resource.
  c                     g)Nr.   r   r5   s    r   r@   IAPWeb._Name   s    r   c                     [        U R                  5      nU R                  R                  S SSR	                  UR
                  5      0[        S9$ )N
projectsIdz
{}/iap_webparams
collection)r'   r.   r    ParseformatprojectNumberPROJECTS_COLLECTIONr/   r.   s     r   rD   IAPWeb._Parse   sM    $,,'G==,--g.C.CD
)  + +r   r   N)ru   rv   rw   rx   ry   r@   rD   r}   r   r   r   r   r      s    +r   r   c                 $    SR                  U 5      $ )Nzappengine-{})r   )app_ids    r   _AppEngineAppIdr      s    			v	&&r   c                     [         R                  R                  5       n[        R                  R                  SSU 0[        S9nUR                  R                  UR                  5       S9nUR                  R                  R                  U5      $ )z)Returns the application, given a project.NappsIdr   name)r   AppengineApiClientGetApiClientr   r   r   APPENGINE_APPS_COLLECTIONr6   AppengineAppsGetRequestrL   r-   appsr#   )r.   
api_clientapplicationrR   s       r   _GetApplicationr      s    #66CCE*""((

G + ) ,+ 77##% 8 ''						#	#G	,,r   c                   >    \ rS rSrSrS rS r  S
S jrS rS r	S	r
g)AppEngineApplication   z+IAP IAM App Engine application resource.
  c                     g)NzApp Engine applicationr   r5   s    r   r@   AppEngineApplication._Name   s    #r   c                     [        U R                  5      nU R                  R                  S UR                  [        UR                  5      S.[        S9$ N)r.   iapWebIdr   )r'   r.   r    r   r   r   	projectIdIAP_WEB_COLLECTIONr   s     r   rD   AppEngineApplication._Parse   sP    $,,'G==,,'(9(9:
 &  ' 'r   Nc                 H   [        U R                  5      n[        R                  R	                  5       n[        SUR                  UX#5      nUR                  R                  UR                  R                  " S0 UD6S9n[        R                  R                  U R                  [        S9nUR                  R                  UR                  5       USS9nUR                   R"                  R%                  U5      n	[&        R(                  " UR                   R*                  U	5      $ )NF)r   )r   ziap,)r   r   
updateMaskr   )r   r.   r   r   r   _MakeIAPKwargsr   r6   ApplicationIdentityAwareProxyr   r   r   r   AppengineAppsPatchRequestrL   r-   r   Patchr   WaitForOperationapps_operations)
r/   enabledoauth2_client_idoauth2_client_secretr   r   
iap_kwargsapplication_updateupdate_request	operations
             r   _SetAppEngineApplicationIap0AppEngineApplication._SetAppEngineApplicationIap   s	   !$,,/K%88EEGJ{ 0HJ#,,8822@Z@ 9 B $$**!: + <K  ((BB%%'& C N !!&&,,^<I++J,=,=,M,M,57 7r   c                 (    U R                  SUU5      $ )z(Enable IAP on an App Engine Application.Tr   r/   r   r   s      r   EnableAppEngineApplication.Enable   s    ++D,<,@B Br   c                 $    U R                  S5      $ )z)Disable IAP on an App Engine Application.Fr   r5   s    r   DisableAppEngineApplication.Disable   s    ++E22r   r   NN)ru   rv   rw   rx   ry   r@   rD   r   r   r   r}   r   r   r   r   r      s+    $' CG7;7,B3r   r   c                   8   ^  \ rS rSrSrU 4S jrS rS rSrU =r	$ )AppEngineService   z'IAP IAM App Engine service resource.
  c                 8   > [         [        U ]  X5        X0l        g r   )superr   r0   
service_id)r/   r   r.   r   	__class__s       r   r0   AppEngineService.__init__   s    	
D*=B Or   c                     g)NzApp Engine application servicer   r5   s    r   r@   AppEngineService._Name   s    +r   c                     [        U R                  5      nU R                  R                  S UR                  [        UR                  5      U R                  S.[        S9$ N)r.   r   	serviceIdr   )	r'   r.   r    r   r   r   r   r   IAP_WEB_SERVICES_COLLECTIONr   s     r   rD   AppEngineService._Parse   sW    $,,'G==,,'(9(9:

 /  0 0r   )r   
ru   rv   rw   rx   ry   r0   r@   rD   r}   __classcell__r   s   @r   r   r      s    !,	0 	0r   r   c                   8   ^  \ rS rSrSrU 4S jrS rS rSrU =r	$ )AppEngineServiceVersioni  z/IAP IAM App Engine service version resource.
  c                 D   > [         [        U ]  X5        X0l        X@l        g r   )r   r   r0   r   
version_id)r/   r   r.   r   r   r   s        r   r0    AppEngineServiceVersion.__init__  s    	
!41-I O Or   c                     g)Nz&App Engine application service versionr   r5   s    r   r@   AppEngineServiceVersion._Name  s    3r   c                     [        U R                  5      nU R                  R                  S UR                  [        UR                  5      U R                  U R                  S.[        S9$ )N)r.   r   r   	versionIdr   )
r'   r.   r    r   r   r   r   r   r   $IAP_WEB_SERVICES_VERSIONS_COLLECTIONr   s     r   rD   AppEngineServiceVersion._Parse  s^    $,,'G==,,'(9(9:	
 8  9 9r   )r   r   r   r   s   @r   r   r     s    !
4
9 
9r   r   computec                   >   ^  \ rS rSrSrU 4S jrS rS rS rSr	U =r
$ )BackendServicesi   z%IAP IAM backend services resource.
  c                 8   > [         [        U ]  X5        X0l        g r   )r   r   r0   	region_idr/   r   r.   r   r   s       r   r0   BackendServices.__init__$      	/4)-ANr   c                     g)Nzbackend servicesr   r5   s    r   r@   BackendServices._Name(      r   c                 ^    U R                   (       a  [        < SU R                   < 3$ [        $ N-r   BACKEND_SERVICESr5   s    r   	_IapWebIdBackendServices._IapWebId+      ~~($..99r   c                     [        U R                  5      nU R                  5       nU R                  R	                  S UR
                  US.[        S9$ r   r'   r.   r   r    r   r   r   r/   r.   
iap_web_ids      r   rD   BackendServices._Parse1  Q    $,,'G!J==,,"
 &  ' 'r   r   ru   rv   rw   rx   ry   r0   r@   r   rD   r}   r   r   s   @r   r   r      s!    	' 	'r   r   c                   X   ^  \ rS rSrSrU 4S jrS rS rS r  SS jr	S r
S	 rS
rU =r$ )BackendServicei=  z$IAP IAM backend service resource.
  c                 D   > [         [        U ]  X5        X0l        X@l        g r   )r   r   r0   r   r   r/   r   r.   r   r   r   s        r   r0   BackendService.__init__A      	.$(@N Or   c                     g)Nzbackend servicer   r5   s    r   r@   BackendService._NameF      r   c                 ^    U R                   (       a  [        < SU R                   < 3$ [        $ r   r   r5   s    r   r   BackendService._IapWebIdI  r   r   c                     [        U R                  5      nU R                  5       nU R                  R	                  S UR
                  UU R                  S.[        S9$ r   r'   r.   r   r    r   r   r   r   r   s      r   rD   BackendService._ParseO  X    $,,'G!J==,,"

 /  0 0r   c                 6  ^ ^ [         R                  " [        R                  R                  5      mTR
                  nUU 4S jnT R                  (       a~  TR                  R                  T R                  T R                  T R                  S.[        S9nUR                  R                  UR                  UR                  UR                  5       S9nOgTR                  R                  T R                  ST R                  0[         S9nUR                  R#                  UR                  UR                  5       S9nUR%                  U" SU5      /5      nU(       aP  US   R&                  UR                  R(                  R*                  R,                  La  [.        R0                  " S	5        [3        S
US   R4                  UX#5      n	[6        R8                  " US   5      n
UR                  R:                  " S0 U	D6U
l        T R                  (       a?  UR                  R=                  UR                  UR                  UR                  5       U
S9nO3UR                  R?                  UR                  UR                  5       U
S9nUR%                  U" SU5      /5      $ )Nc                    > TR                   (       a#  TR                  R                  R                  U U4$ TR                  R                  R                  X4$ r   )r   r-   apitools_clientregionBackendServicesbackendServices)methodrR   holderr/   s     r   MakeRequest9BackendService._SetBackendServiceIap.<locals>.MakeRequest_  sJ    	MM))??
 	
 }},,<<fMMr   )r.   regionr   )r.   r  backendServicer.   )r.   r  r#   r   zIAP has been enabled for a backend service that does not use HTTPS. Data sent from the Load Balancer to your VM will not be encrypted.T)r.   r  r  backendServiceResource)r.   r  r  r   r   ) r   ComputeApiHolderr
   ReleaseTrackGAr-   r   r   r   r   r.   *COMPUTE_REGION_BACKEND_SERVICES_COLLECTIONr6   &ComputeRegionBackendServicesGetRequestr  Name#COMPUTE_BACKEND_SERVICES_COLLECTION ComputeBackendServicesGetRequestMakeRequestsprotocolr   ProtocolValueValuesEnumHTTPSr   warningr   r   r   CopyProtoMessageBackendServiceIAP(ComputeRegionBackendServicesPatchRequest"ComputeBackendServicesPatchRequest)r/   r   r   r   r-   r  backend_serviceget_requestobjectsr   replacementr   r  s   `           @r   _SetBackendServiceIap$BackendService._SetBackendServiceIap[  sL   **4+<+<+?+?@F]]FN ~~((..
// @ / o OOJJ!)) ''(--/ K k ((..
// 9 / o OODD!))/:N:N:P E k !!;uk#B"CDGGAJ''OO**BBHHI	kk & '  gajnng 0HJ++GAJ7Koo77E*EKO~~OO!)) ''(--/!,	 P n II!))(--/!, J .n
 G^ DEFFr   c                 (    U R                  SUU5      $ )z Enable IAP on a backend service.Tr+  r   s      r   r   BackendService.Enable  s    %%d&6&:< <r   c                 $    U R                  S5      $ )z!Disable IAP on a backend service.Fr.  r5   s    r   r   BackendService.Disable  s    %%e,,r   r   r   r   )ru   rv   rw   rx   ry   r0   r@   r   rD   r+  r   r   r}   r   r   s   @r   r   r   =  s<    !

0 =A15@GD<- -r   r   forwarding_rulec                   >   ^  \ rS rSrSrU 4S jrS rS rS rSr	U =r
$ )ForwardingRulesi  z%IAP IAM forwarding rules resource.
  c                 8   > [         [        U ]  X5        X0l        g r   )r   r5  r0   r   r   s       r   r0   ForwardingRules.__init__  r   r   c                     g)Nzforwarding rulesr   r5   s    r   r@   ForwardingRules._Name  r   r   c                 ^    U R                   (       a  [        < SU R                   < 3$ [        $ r   r   FORWARDING_RULEr5   s    r   r   ForwardingRules._IapWebId      ~~'88r   c                     [        U R                  5      nU R                  5       nU R                  R	                  S UR
                  US.[        S9$ r   r   r   s      r   rD   ForwardingRules._Parse  r   r   r   r   r   s   @r   r5  r5    s!    	' 	'r   r5  c                   >   ^  \ rS rSrSrU 4S jrS rS rS rSr	U =r
$ )ForwardingRulei  z$IAP IAM forwarding rule resource.
  c                 D   > [         [        U ]  X5        X0l        X@l        g r   )r   rB  r0   r   r   r   s        r   r0   ForwardingRule.__init__  r   r   c                     g)Nzforwarding ruler   r5   s    r   r@   ForwardingRule._Name  r  r   c                 ^    U R                   (       a  [        < SU R                   < 3$ [        $ r   r;  r5   s    r   r   ForwardingRule._IapWebId  r>  r   c                     [        U R                  5      nU R                  5       nU R                  R	                  S UR
                  UU R                  S.[        S9$ r   r  r   s      r   rD   ForwardingRule._Parse  r	  r   r2  r   r   s   @r   rB  rB    s!    !

0 
0r   rB  	cloud_runc                   >   ^  \ rS rSrSrU 4S jrS rS rS rSr	U =r
$ )	CloudRunsi  zIAP IAM cloud runs resource.
  c                 8   > [         [        U ]  X5        X0l        g r   )r   rM  r0   r   r   s       r   r0   CloudRuns.__init__  s    	)T#M;Nr   c                     g)Nz
cloud runsr   r5   s    r   r@   CloudRuns._Name  s    r   c                 0    [         < SU R                  < 3$ r   	CLOUD_RUNr   r5   s    r   r   CloudRuns._IapWebId      00r   c                     [        U R                  5      nU R                  5       nU R                  R	                  S UR
                  US.[        S9$ r   r   r   s      r   rD   CloudRuns._Parse  r   r   r   r   r   s   @r   rM  rM    s!    1	' 	'r   rM  c                   >   ^  \ rS rSrSrU 4S jrS rS rS rSr	U =r
$ )CloudRuni  zIAP IAM cloud run resource.
  c                 D   > [         [        U ]  X5        X0l        X@l        g r   )r   rZ  r0   r   r   r   s        r   r0   CloudRun.__init__  s    	(D"=:N Or   c                     g)Nz	cloud runr   r5   s    r   r@   CloudRun._Name  s    r   c                 0    [         < SU R                  < 3$ r   rS  r5   s    r   r   CloudRun._IapWebId  rV  r   c                     [        U R                  5      nU R                  5       nU R                  R	                  S UR
                  UU R                  S.[        S9$ r   r  r   s      r   rD   CloudRun._Parse  r	  r   r2  r   r   s   @r   rZ  rZ    s!    !
1
0 
0r   rZ  c                     U (       a5  U(       a.  U(       a  UR                   (       d  [        R                  " S5        SU0nU(       a  X5S'   U(       a  XES'   U$ )a  Make IAP kwargs for IAP settings.

Args:
  is_backend_service: boolean, True if we are applying IAP to a backend
      service.
  existing_iap_settings: appengine IdentityAwareProxy or compute
      BackendServiceIAP, IAP settings.
  enabled: boolean, True if IAP is enabled.
  oauth2_client_id: OAuth2 client ID to use.
  oauth2_client_secret: OAuth2 client secret to use.

Returns:
  IAP kwargs for appengine IdentityAwareProxy or compute BackendServiceIAP
zIAP only protects requests that go through the Cloud Load Balancer. See the IAP documentation for important security best practices: https://cloud.google.com/iap/.r   oauth2ClientIdoauth2ClientSecret)r   r   r"  )is_backend_serviceexisting_iap_settingsr   r   r   kwargss         r   r   r      sU    " W %:%B%BKK A B & /#7 	-r   c                   P    \ rS rSrSrS r\S 5       r\S 5       rS r	S r
S rS	rg
)IapSettingsResourcei@  z!Class for IAP settings resources.c                     Xl         X l        [        U5      U l        [        R
                  " [        U R                  5      U l        [        U R                  5      U l	        g)zConstructor for IAP setting resource.

Args:
  release_track: base.ReleaseTrack, release track of command.
  resource_name: resource name for the iap settings.
N)
r   resource_namer   r   r	   r,   r   r-   r!   r    )r/   r   rl  s      r   r0   IapSettingsResource.__init__C  sI     '&"=1D(($2B2BCDK !1!12DMr   c                 .    U R                   R                  $ r   r3   r5   s    r   r6   IapSettingsResource.messagesP  r8   r   c                 B    [        U R                  U R                  5      $ r   r:   r5   s    r   r<   IapSettingsResource.serviceT  r>   r   c           	         [         R                  " U5      nSU;   a+  SUS   ;   a"  SUS   S   ;   a  [        R                  " S5        SU;   a  SUS   ;   a  [        R                  " S5         [        R
                  " X#5      nU$ ! [         a?  n[        R                  " SR                  U[        R                  " U5      5      5      eSnAff = f)	a;  Create an iap settings message from a JSON formatted file.

Args:
   iap_settings_file_path: Path to iap_setttings JSON file
   iap_settings_message_type: iap settings message type to convert JSON to

Returns:
   the iap_settings message filled from JSON file
Raises:
   BadFileException if JSON file is malformed.
access_settingsoauth_settings
login_hintzlogin_hint setting is not a replacement for access control. Always enforce an appropriate access policy if you want to restrict access to users outside your domain.gcip_settingszEnabling gcip_settings significantly changes the way IAP authenticates users. Identity Platform does not support IAM, so IAP will not enforce any IAM policies for requests to your application.zBIap settings file {0} does not contain properly formatted JSON {1}N)r   	load_pathr   r"  r   PyValueToMessageAttributeErrorcalliope_exceptionsBadFileExceptionr   six	text_type)r/   iap_settings_file_pathiap_settings_message_typeiap_settings_to_parseiap_settings_messagees         r   _ParseIapSettingsFile)IapSettingsResource._ParseIapSettingsFileX  s     !NN+AB22 56G HH !234DEF 
kk2 	2245FGG	kk%66
#    00
N6(#--*:; s   .B 
C:C

Cc                 ~    U R                   R                  U R                  S9nU R                  R	                  U5      $ )z$Get the setting for an IAP resource.r   )r6   IapGetIapSettingsRequestrl  r<   GetIapSettingsr/   rR   s     r   GetIapSetting!IapSettingsResource.GetIapSetting  s4    mm44$:L:L4MG<<&&w//r   c                     U R                  XR                  R                  5      nU R                  Ul        U R                  R                  X R                  S9nU R                  R                  U5      $ )z$Set the setting for an IAP resource.)iapSettingsr   )r  r6   IapSettingsrl  r   IapUpdateIapSettingsRequestr<   UpdateIapSettings)r/   setting_fileiap_settingsrR   s       r   SetIapSetting!IapSettingsResource.SetIapSetting  sh    --mm//L **Lmm77 '9'9 8 G <<))'22r   )r   r-   r    r   rl  N)ru   rv   rw   rx   ry   r0   rz   r6   r<   r  r  r  r}   r   r   r   rj  rj  @  sB    )3 ' ' 2 2- ^0
	3r   rj  c                   v   ^  \ rS rSrSrSU 4S jjrS rS rS rS r	S r
S	 rS
 rS rSS jrS rS rSrU =r$ )IapTunnelDestGroupResourcei  z%IAP TCP tunnelDestGroup IAM resource.c                 D   > [         [        U ]  X5        X0l        X@l        g r   )r   r  r0   r  
group_name)r/   r   r.   r  r  r   s        r   r0   #IapTunnelDestGroupResource.__init__  s    	
$d4]LK Or   c                 .    [        U R                  S5      $ )N(projects_iap_tunnel_locations_destGroups)r;   r-   r5   s    r   ResourceService*IapTunnelDestGroupResource.ResourceService  s    4;; JKKr   c                     g)Niap_tunneldestgroupsr   r5   s    r   r@    IapTunnelDestGroupResource._Name  s    !r   c                 \    U R                   c  U R                  5       $ U R                  5       $ r   )r  _ParseWithoutGroupId_ParseWithGroupIdr5   s    r   rD   !IapTunnelDestGroupResource._Parse  s*    &&((!!##r   c                     [        U R                  5      R                  nU R                  R	                  S UU R
                  U R                  S.[        S9$ )N)r   locationsIddestGroupsIdr   )r'   r.   r   r    r   r  r  IAP_TCP_DESTGROUP_COLLECTION)r/   project_numbers     r   r  ,IapTunnelDestGroupResource._ParseWithGroupId  sP     .<<N==(;; OO

 0  1 1r   c                     [        U R                  5      R                  U l        U R                  R                  S U R                  U R                  S.[        S9$ )N)r   r  r   )r'   r.   r   r  r    r   r  IAP_TCP_LOCATIONS_COLLECTIONr5   s    r   r  /IapTunnelDestGroupResource._ParseWithoutGroupId  sR    %dll3AAD==--;;
 0  1 1r   c                     U R                   U(       a  UR                  S5      O/ U(       a  UR                  S5      S.$ / S.$ )N,)r   cidrsfqdns)r  split)r/   	cidr_list	fqdn_lists      r   _CreateTunnelDestGroupObject7IapTunnelDestGroupResource._CreateTunnelDestGroupObject  s@    )2%)2%  9; r   c                     U R                  X5      nU R                  R                  U R                  5       R	                  5       UU R
                  S9nU R                  5       R                  U5      $ )zCreates a TunnelDestGroup.)parenttunnelDestGrouptunnelDestGroupId)r  r6   4IapProjectsIapTunnelLocationsDestGroupsCreateRequestr  rL   r  r  Create)r/   r  r  tunnel_dest_grouprR   s        r   r  !IapTunnelDestGroupResource.Create  sm     99)OJJ,,.;;=-"oo 	K 	
  !((11r   c                     U R                   R                  U R                  5       R                  5       S9nU R	                  5       R                  U5      $ )zDeletes the TunnelDestGroup.r   )r6   4IapProjectsIapTunnelLocationsDestGroupsDeleteRequestrD   rL   r  Deleter  s     r   r  !IapTunnelDestGroupResource.Delete  sO     	JJ++- 	K 	
 
 !((11r   c           	          U R                   R                  U R                  5       R                  5       S9n[        R
                  " U R                  5       UUUSSS9$ )zYields TunnelDestGroups.)r  tunnelDestGroupspageSize)
batch_sizelimitfieldbatch_size_attribute)r6   2IapProjectsIapTunnelLocationsDestGroupsListRequestr  rL   r   YieldFromListr  )r/   	page_sizer  list_filterlist_reqs        r   ListIapTunnelDestGroupResource.List  sa    }}OO((*779 P H ## ' r   c                     U R                   R                  U R                  5       R                  5       S9nU R	                  5       R                  U5      $ )zGet TunnelDestGroup.r   )r6   1IapProjectsIapTunnelLocationsDestGroupsGetRequestrD   rL   r  r#   r  s     r   r#   IapTunnelDestGroupResource.Get  sJ    mmMM[[]'') N G !%%g..r   c                     U R                  X5      nU R                  R                  U R                  5       R	                  5       UUS9nU R                  5       R                  U5      $ )zUpdate TunnelDestGroup.)r   r  r   )r  r6   3IapProjectsIapTunnelLocationsDestGroupsPatchRequestrD   rL   r  r   )r/   r  r  update_maskr  rR   s         r   Update!IapTunnelDestGroupResource.Update  sc     99)OmmOO[[]'')) P  G !''00r   )r  r  r  )r   N)NNN)ru   rv   rw   rx   ry   r0   r  r@   rD   r  r  r  r  r  r  r#   r  r}   r   r   s   @r   r  r    sH    -!
L"$
	1122/	1 	1r   r  )?ry   r{   apitools.base.pyr   r   googlecloudsdk.api_lib.appr   r   +googlecloudsdk.api_lib.cloudresourcemanagerr   googlecloudsdk.api_lib.computer   googlecloudsdk.api_lib.utilr	   googlecloudsdk.callioper
   r   rz  googlecloudsdk.command_lib.iamr   #googlecloudsdk.command_lib.projectsr   r$   googlecloudsdk.corer   r   r   r|  r   r   r  r  r   r   r   r   r  r  r   r!   r'   with_metaclassABCMetaobjectr)   r   r   r   r   r   r   r   r   r   r<  r5  rB  rT  rM  rZ  r   rj  r  r   r   r   <module>r     sf      % ' ; 6 D 7 , ( E 3 E # ) $ 

, &? #-L *$ + = 'O $M B 
BR-S''V< R-j+^ +'-/3> /3d0~ 0.9n 92  'n ':h-^ h-V $'n ':0^ 0> 	' '40~ 08@U3& U3pc1 c1r   